python中K-means算法基础知识点


Posted in Python onJanuary 25, 2021

能够学习和掌握编程,最好的学习方式,就是去掌握基本的使用技巧,再多的概念意义,总归都是为了使用服务的,K-means算法又叫K-均值算法,是非监督学习中的聚类算法。主要有三个元素,其中N是元素个数,x表示元素,c(j)表示第j簇的质心,下面就使用方式给大家简单介绍实例使用。

K-Means算法进行聚类分析

km = KMeans(n_clusters = 3)
km.fit(X)
centers = km.cluster_centers_
print(centers)

三个簇的中心点坐标为:

[[5.006 3.428 ]

[6.81276596 3.07446809]

[5.77358491 2.69245283]]

比较一下K-Means聚类结果和实际样本之间的差别:

predicted_labels = km.labels_
fig, axes = plt.subplots(1, 2, figsize=(16,8))
axes[0].scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1, 
        edgecolor='k', s=150)
axes[1].scatter(X[:, 0], X[:, 1], c=predicted_labels, cmap=plt.cm.Set1,
        edgecolor='k', s=150)
axes[0].set_xlabel('Sepal length', fontsize=16)
axes[0].set_ylabel('Sepal width', fontsize=16)
axes[1].set_xlabel('Sepal length', fontsize=16)
axes[1].set_ylabel('Sepal width', fontsize=16)
axes[0].tick_params(direction='in', length=10, width=5, colors='k', labelsize=20)
axes[1].tick_params(direction='in', length=10, width=5, colors='k', labelsize=20)
axes[0].set_title('Actual', fontsize=18)
axes[1].set_title('Predicted', fontsize=18)

k-means算法实例扩展内容:

# -*- coding: utf-8 -*- 
"""Excercise 9.4"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sys
import random

data = pd.read_csv(filepath_or_buffer = '../dataset/watermelon4.0.csv', sep = ',')[["密度","含糖率"]].values

########################################## K-means ####################################### 
k = int(sys.argv[1])
#Randomly choose k samples from data as mean vectors
mean_vectors = random.sample(data,k)

def dist(p1,p2):
 return np.sqrt(sum((p1-p2)*(p1-p2)))
while True:
 print mean_vectors
 clusters = map ((lambda x:[x]), mean_vectors) 
 for sample in data:
  distances = map((lambda m: dist(sample,m)), mean_vectors) 
  min_index = distances.index(min(distances))
  clusters[min_index].append(sample)
 new_mean_vectors = []
 for c,v in zip(clusters,mean_vectors):
  new_mean_vector = sum(c)/len(c)
  #If the difference betweenthe new mean vector and the old mean vector is less than 0.0001
  #then do not updata the mean vector
  if all(np.divide((new_mean_vector-v),v) < np.array([0.0001,0.0001]) ):
   new_mean_vectors.append(v) 
  else:
   new_mean_vectors.append(new_mean_vector) 
 if np.array_equal(mean_vectors,new_mean_vectors):
  break
 else:
  mean_vectors = new_mean_vectors 

#Show the clustering result
total_colors = ['r','y','g','b','c','m','k']
colors = random.sample(total_colors,k)
for cluster,color in zip(clusters,colors):
 density = map(lambda arr:arr[0],cluster)
 sugar_content = map(lambda arr:arr[1],cluster)
 plt.scatter(density,sugar_content,c = color)
plt.show()

到此这篇关于python中K-means算法基础知识点的文章就介绍到这了,更多相关python中K-means算法是什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python中用split()方法分割字符串的使用介绍
May 20 Python
python基础教程项目五之虚拟茶话会
Apr 02 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
Python 脚本实现淘宝准点秒杀功能
Nov 13 Python
Django实现简单网页弹出警告代码
Nov 15 Python
python的json中方法及jsonpath模块用法分析
Dec 06 Python
基于Python执行dos命令并获取输出的结果
Dec 30 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
Python约瑟夫生者死者小游戏实例讲解
Jan 04 Python
Python安装使用Scrapy框架
Apr 12 Python
python中HTMLParser模块知识点总结
Jan 25 #Python
pycharm配置QtDesigner的超详细方法
Jan 25 #Python
Python扫描端口的实现
Jan 25 #Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 #Python
Python实现京东抢秒杀功能
Jan 25 #Python
Python Process创建进程的2种方法详解
Jan 25 #Python
使用python对excel表格处理的一些小功能
Jan 25 #Python
You might like
php生成高清缩略图实例详解
2015/12/07 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
在Javascript中定义对象类别
2006/12/22 Javascript
javascript引用对象的方法代码
2007/08/13 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
用Python的urllib库提交WEB表单
2009/02/24 Python
详解Python中的动态属性和特性
2018/04/07 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
企业内控岗位的职责
2014/02/07 职场文书
活动总结格式
2014/08/30 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
节约用电通知
2015/04/25 职场文书
无线电知识基础入门篇
2022/02/18 无线电
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技