机器学习(三)K-means聚类(手肘法、轮廓系数、可视化代码)
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聚类(手肘法、轮廓系数、可视化代码)相关推荐
- 机器学习之K均值的SSE和轮廓系数
前文回顾: 肘部法:SSE误差平方和 SSE(sum of the squared errors)是对簇松散度的衡量,作为目标函数其实是一个严格的坐标下降(Coordinate Decendet)过程 ...
- 【进阶版】 机器学习之K均值聚类、层次聚类、密度聚类、实战项目含代码(15)
目录 欢迎订阅本专栏,持续更新中~ 本专栏前期文章介绍! 机器学习配套资源推送 进阶版机器学习文章更新~ 点击下方下载高清版学习知识图册 项目要求 数据透视 代码实战 维度太多,利用PCA降维的思想进 ...
- OpenCV官方文档 理解k - means聚类
理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...
- OpenCV的k - means聚类 -对图片进行颜色量化
OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...
- 聚类效果评估——轮廓系数(Silhouette Coefficient)附Python代码
轮廓系数 前言 是什么? 为什么? 由此可得: 怎么用? 不适用 示例 前言 在机器学习中,无监督学习算法中聚类算法算作相对重要的一部分算法.也常在低资源和无标注的情况下使用. 其中KMeans作为聚 ...
- 聚类评估算法-轮廓系数(Silhouette Coefficient )
轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式.最早由 Peter J. Rousseeuw 在 1986 提出.它结合内聚度和分离度两种因素.可以用来在相同原 ...
- Sklearn 成长之路(五)K-means聚类及其评价指标——轮廓系数
聚类结果评价指标--轮廓系数 某个点的轮廓系数定义为: s=disMeanout−disMeaninmax(disMeanout,disMeanin)s =\frac{disMean_{out} - ...
- python计算3j系数_聚类算法评估——轮廓系数及python实现
含义 轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式. 可见轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优. 计算步骤 1)对于簇中 ...
- k means聚类算法_一文读懂K-means聚类算法
1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...
- sklearn机器学习:K均值聚类
K-Means 均值聚类聚类算法可以说是最简单但是使用最广的一种聚类算法了,原理也简单易懂,sklearn中提供了很多聚类算法的实现,所以这里就学习一下K-Means算法.接下来会介绍一些关键性的概念 ...
最新文章
- 内存的分配方式有几种? 动态内存的的传递注意事项!
- 如何改变computed执行_企业管理|执行力差的企业一般有这几个点没做好
- jquery文本折叠
- java计算八皇后_八皇后java算法
- JSP+Javabean+Servlet实现用户注册
- (DFS+DP)滑雪(poj1088)
- Skywalking-11:Skywalking查询协议——案例分析
- 1002: Prime Path
- php+pdo分页类
- python进阶中文版_GitHub - lcm2179/Intermediate-Python: 《Python进阶》(Intermediate Python 中文版)...
- 推荐系统的4个方面完全总结
- 计算机更新后打印机无法使用,升级win10系统后无法使用HP打印机的官方解决方案...
- 头条号小程序制作分享
- [办公应用]word 2007:全屏快捷键,让复制图片保持原样大小(office 全屏快捷键)...
- java 7新特性-TWR(Try-with-resources)
- Win8.1 取消开机密码
- 新疆伊犁山开挖破裂机液压岩石劈裂棒 大型岩石分裂棒行业推荐
- Nestjs模块机制的概念和实现原理
- python文件同时读写_如何用python同时读写文件
- 00 石锅土鲫鱼项目导语