确定K-means聚类中的最佳K值的一种常见方法是使用肘曲线。肘曲线是K值和聚类内误差(Within-Cluster Sum of Squares,WCSS)之间的关系图。WCSS是指每个数据点与其所属聚类中心之间距离的平方和。
以下是使用肘曲线方法来确定最佳K值的示例代码:
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 数据集
data = [[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6], [9, 11]]
# 初始化K值和WCSS列表
k_values = []
wcss_values = []
# 尝试不同的K值
for k in range(1, 10):
kmeans = KMeans(n_clusters=k)
kmeans.fit(data)
k_values.append(k)
wcss_values.append(kmeans.inertia_) # 计算WCSS值
# 绘制肘曲线
plt.plot(k_values, wcss_values, 'bx-')
plt.xlabel('Number of clusters (k)')
plt.ylabel('WCSS')
plt.title('Elbow Method for Optimal k')
plt.show()
运行以上代码,将得到一个绘制了K值和WCSS之间关系的肘曲线图。根据曲线的形状,可以找到一个“肘部”,即曲线开始平缓下降的地方。该“肘部”所对应的K值通常可认为是最佳的聚类数。
注意:上述示例代码中的数据集是一个简单的二维数据集,你可以根据实际情况调整数据集和K值的范围。