python机器学习——Kmeans之K值选取实现(肘部观察法)

news/2024/5/20 10:37:43 标签: 聚类, 机器学习, python

Kmeans之K值选取实现

python"># 导入必要的工具包。
import numpy as np
from sklearn.cluster import KMeans
from scipy.spatial.distance import cdist
import matplotlib.pyplot as plt
# 使用均匀分布函数随机三个簇,每个簇周围10个数据样本。
cluster1 = np.random.uniform(0.5, 1.5, (2, 10))
cluster2 = np.random.uniform(5.5, 6.5, (2, 10))
cluster3 = np.random.uniform(3.0, 4.0, (2, 10))
# 绘制 30 个数据样本的分布图像。
X = np.hstack((cluster1, cluster2, cluster3)).T
plt.scatter(X[:,0], X[:, 1])
plt.xlabel('x1')
plt.ylabel('x2')
plt.show()

在这里插入图片描述

python"># 测试 9 种不同聚类中心数量下,每种情况的聚类质量,并作图。
K = range(1, 10)
meandistortions = []
for k in K:
    kmeans = KMeans(n_clusters=k)
    kmeans.fit(X)
    meandistortions.append(sum(np.min(cdist(X, kmeans.cluster_centers_, 'euclidean'), axis=1))/X.shape[0])
plt.plot(K, meandistortions, 'bx-')
plt.xlabel('k')
plt.ylabel('Average Dispersion')
plt.title('Selecting k with the Elbow Method')
plt.show()

在这里插入图片描述

随机采样三个类簇的数据点,由上图可见,当类簇数量为 1 或 2 的时候,样本距所属类簇的平均距离的下降速度很快,这说明更改 K 值会让整体聚类结构有很大改变,也意味着新的聚类数量让算法有更大的优化空间,这样的 K 值不能反映真实的类簇数量。而当 K = 3 时,平均距离的下降速度有了显著放缓,表明 K = 3 是相对最佳的类簇数量。

参考
[1] 范淼,李超.Python 机器学习及实践[M].清华大学出版社, 北京, 2016.


http://www.niftyadmin.cn/n/1446772.html

相关文章

hdu 5044 Tree(树链剖分)

题目链接:hdu 5044 Tree 题目大意:给定一棵树,两种操作: ADD1 u v w:路径uv上的节点值均加上wADD2 u v w:路径uv上的边均加上w 最后分别输出每个节点以及每条边的值。 解题思路:树链剖分&#…

带你了解Greenplum的锁管理机制

了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站 引言 数据库系统有多种实现并发控制的机制,而锁作为其中一种实现方式,具有非常重要的作用。在这篇文章中,我们将介绍Greenplum中的锁管理机制是如何实现的。本周五&…

10大严重安全问题及预防措施(上)(转)

黑客,诈骗者和专门窃取隐私的人,他们攻击电脑和窃取隐私的花招总是层出不穷。这里列举了最新的攻防策略,以便广大用户有所了解做好防备。  虽然笔者经常打上最新的系统补丁,定期更新病毒库并扫描系统,但读完这篇文章…

python机器学习——主成分分析理论简介

主成分分析理论简介一、特征降维1.1什么是特征降维?1.2为什么要进行特征降维?1.3特征选择和特征抽取二、主成分分析(PCA)理论2.1 算法描述2.2 PCA 在图像识别的应用2.3、主成分分析法优缺点参考一、特征降维 1.1什么是特征降维? 采用低维度…

「实战系列」万字长文轻松学会 Greenplum 6.2.1 安装配置

了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站 2019年12月12号,pivotal 发布gp6.2.1,适逢公司gp集群扩建升级,需要确定版本,所以安装gp6的版本与gp5做比对测试。本文档参考官方文档,按照官方标…

js、css3实现图片的放大效果

今天看网易的网站上,当我把鼠标放上去的时候发现图片放大,移开图片缩小,于是自行尝试,结果如下。 方法一:使用js和css3 效果如图: 这样的实现非常简单,就是利用js的mouseover和 mouseout事件&am…

Linux shell编程学习笔记-----第六章变量和引用

6.1变量 变量可分为本地变量(随着shell进程的消亡而消亡,类似于java C 中的局部变量),环境变量(适用于所有由登录进程产生的子进程),位置参数(用于向shell脚本传递参数,是…

python机器学习——主成分分析PCA实现

主成分分析PCA实现一、数据降维二、应用“手写体数字图像”数据进行PCA操作参考文献:一、数据降维 降维/压缩问题是选取具有代表性的特征,在保持数据多样性( Variance )的基础上,规避掉大量的特征冗余和噪声&#xff…