一、什么是elbow method
Elbow Method 是聚类分析中常用的一种方法,用于确定数据分成的簇数。 基本原则是簇内的平均距离应尽可能小,而簇间的平均距离应尽可能大。
二、如何实现 elbow method
要实现 elbow method,我们需要分以下几步进行:
1、导入所需的库
import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans
2、读取数据
data = np.loadtxt('data.txt')
3、初始化 k 和 WCSS
k 代表簇的数量,WCSS 代表簇内平均距离
wcss = [] k_range = range(1,10)
4、遍历每个 k,计算 sum of squared errors (SSE)
for k in k_range:
km = KMeans(n_clusters=k)
km.fit(data)
wcss.append(km.inertia_)
5、绘制 elbow curve,选择最优 k
plt.plot(k_range, wcss)
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.title('Elbow Method')
plt.show()
运行以上代码,我们可以得到一个 elbow curve.
三、如何解读 elbow curve
Elbow curve 一般呈现出一个弯曲的拐点,这个拐点就是数据最优的聚类数目。我们需要观察 elbow curve 来选择最优的 k 值。随着 k 的增大,WCSS 值会逐渐减小,这是很正常的,因为聚类层次增加了,簇内的相似度一般会随之增强。 但是,当 k 增加过多时, 增加的效果会逐渐变弱,这是因为原本需要聚类的数据已经被分的很细了,再增加 k 相当于把本来属于同一个簇的点分散到了不同的簇中,簇内相似度不会变好,反而会变差。
因此,通过观察 elbow curve,我们可以选择距离拐点最近的 k 值作为数据的最优聚类数目。当然,也可以根据实际情况权衡选择一个较小或较大的聚类数目。
四、elbow method存在的问题
Elbow Method 是一种简单有效的选择最优 k 的方法,但是它也存在一些问题:
1、elbow curve 可能没有清晰的拐点,不够直观
2、elbow curve 的结果可能与初始随机值有关,需要多次试验取平均
3、elbow method 可能不适用于某些数据集,如噪声数据、密集数据等
因此,我们在使用 elbow method 的时候需要谨慎评估结果,尽量采用多种方法进行验证。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/236190.html
微信扫一扫
支付宝扫一扫