K-means聚类

聚类是无监督学习当中非常重要的一部分,能够在没有标签的情况下将数据分类。说到聚类,最常用也是最重要的一个算法就是K-means算法。

算法介绍

K-means是一种非常简单快速高效的算法,只需要迭代几次即可。

其原理用一句话来说就是一个“标记实例,更新中心点”的循环。通过几次迭代达到收敛,但是往往是局部最优解。

这里也提出了一种k-means++的算法,这种方法使k-means收敛到最优解的可能性很小。其实一般直接调用sklearn的k-means默认就是k-means++算法,如果你想使用原来的k-means算法,将超参数设置为init=“random”即可

选择k值方法

k-means最重要的参数应该是类别数量了,也就是k值,一般寻找最优的k值有一下两种方法

手肘法

手肘法在很多选取最佳参数的方法中是很常见的,通过找到惯性(簇内平方和)的转折点来找到最佳k值

代码实例

from sklearn.cluster import KMeans
import pandas as pd
scores=[]
for i in range(2,8):  #这里根据你想要分成多少类来决定kmeans = KMeans(n_clusters=i)result_list = kmeans.fit_predict(data)score=kmeans.inertia_  #计算簇内平方和scores.append(score)
plt.plot(range(2,8),scores)
plt.show()
##可以看到最后在4这里有拐点所以最佳k是4

轮廓系数

我们希望达到的目的是”簇内差异小,簇外差异大“。轮廓系数刚好能作为衡量的标准,相对于手肘法来说,轮廓系数比较精确,但是也有其不适用的场景,比如不能用来比较不同算法。http://t.csdn.cn/0kYXQ这篇文章比较详细可以看看。

代码实例可以直接套用

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import pandas as pd
# 定义KMeans,以及K值
data=iris.data #这里用了鸢尾花数据集
scores=[]
for i in range(2,100):  kmeans = KMeans(n_clusters=i)result_list = kmeans.fit_predict(data)score = silhouette_score(data, result_list)scores.append(score)
plt.plot(range(2,100),scores)
print(pd.DataFrame(scores).idxmax()[0]+2) #轮廓系数越大越好(最大是1)
plt.show()

最后结果是这样的。

结果可视化

当我们确定好具体的k值后

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
n_clusters=4   #填你最终确定的k值
data=iris.data  #原始数据
kmeans=KMeans(n_clusters=k)
y_pred=kmeans.fit_predict(iris.data) #预测结果
for i in range(0,n_clusters):plt.scatter(data[y_pred==i,0], data[y_pred==i,1], marker='o', s=30)  #选取对应的点
plt.title('K-means 聚类散点图')

最后结果是这样。

机器学习(三)K-means聚类(手肘法、轮廓系数、可视化代码)相关推荐

  1. 机器学习之K均值的SSE和轮廓系数

    前文回顾: 肘部法:SSE误差平方和 SSE(sum of the squared errors)是对簇松散度的衡量,作为目标函数其实是一个严格的坐标下降(Coordinate Decendet)过程 ...

  2. 【进阶版】 机器学习之K均值聚类、层次聚类、密度聚类、实战项目含代码(15)

    目录 欢迎订阅本专栏,持续更新中~ 本专栏前期文章介绍! 机器学习配套资源推送 进阶版机器学习文章更新~ 点击下方下载高清版学习知识图册 项目要求 数据透视 代码实战 维度太多,利用PCA降维的思想进 ...

  3. OpenCV官方文档 理解k - means聚类

    理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...

  4. OpenCV的k - means聚类 -对图片进行颜色量化

    OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...

  5. 聚类效果评估——轮廓系数(Silhouette Coefficient)附Python代码

    轮廓系数 前言 是什么? 为什么? 由此可得: 怎么用? 不适用 示例 前言 在机器学习中,无监督学习算法中聚类算法算作相对重要的一部分算法.也常在低资源和无标注的情况下使用. 其中KMeans作为聚 ...

  6. 聚类评估算法-轮廓系数(Silhouette Coefficient )

    轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式.最早由 Peter J. Rousseeuw 在 1986 提出.它结合内聚度和分离度两种因素.可以用来在相同原 ...

  7. Sklearn 成长之路(五)K-means聚类及其评价指标——轮廓系数

    聚类结果评价指标--轮廓系数 某个点的轮廓系数定义为: s=disMeanout−disMeaninmax(disMeanout,disMeanin)s =\frac{disMean_{out} - ...

  8. python计算3j系数_聚类算法评估——轮廓系数及python实现

    含义 轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式. 可见轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优. 计算步骤 1)对于簇中 ...

  9. k means聚类算法_一文读懂K-means聚类算法

    1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...

  10. sklearn机器学习:K均值聚类

    K-Means 均值聚类聚类算法可以说是最简单但是使用最广的一种聚类算法了,原理也简单易懂,sklearn中提供了很多聚类算法的实现,所以这里就学习一下K-Means算法.接下来会介绍一些关键性的概念 ...

最新文章

  1. 内存的分配方式有几种? 动态内存的的传递注意事项!
  2. 如何改变computed执行_企业管理|执行力差的企业一般有这几个点没做好
  3. jquery文本折叠
  4. java计算八皇后_八皇后java算法
  5. JSP+Javabean+Servlet实现用户注册
  6. (DFS+DP)滑雪(poj1088)
  7. Skywalking-11:Skywalking查询协议——案例分析
  8. 1002: Prime Path
  9. php+pdo分页类
  10. python进阶中文版_GitHub - lcm2179/Intermediate-Python: 《Python进阶》(Intermediate Python 中文版)...
  11. 推荐系统的4个方面完全总结
  12. 计算机更新后打印机无法使用,升级win10系统后无法使用HP打印机的官方解决方案...
  13. 头条号小程序制作分享
  14. [办公应用]word 2007:全屏快捷键,让复制图片保持原样大小(office 全屏快捷键)...
  15. java 7新特性-TWR(Try-with-resources)
  16. Win8.1 取消开机密码
  17. 新疆伊犁山开挖破裂机液压岩石劈裂棒 大型岩石分裂棒行业推荐
  18. Nestjs模块机制的概念和实现原理
  19. python文件同时读写_如何用python同时读写文件
  20. 00 石锅土鲫鱼项目导语

热门文章

  1. 【android】绘制圆环的三种方式
  2. 【英文】阅读句子理解小妙招 that/which从句到底修饰谁?
  3. 图文讲解Python数据可视化神器 !
  4. python如何实现手眼定标_相机标定(一):机器人手眼标定
  5. 香港理工计算机世界排名,香港理工大学这四个专业是全球百强
  6. 如何成为优秀计算机学者 - 高文老师
  7. 千锋Android游戏开发基础视频教程-cocos2dMars版
  8. 我的第一篇博客_在Linux下用C++编写的德州扑克游戏
  9. 利用逆透视变换获取车载图象的鸟瞰图
  10. 你不知道的font-size属性