【问题标题】:optimal k-mean for given datasets using python使用python给定数据集的最佳k-mean
【发布时间】:2021-03-08 10:18:05
【问题描述】:

我是 python 和最佳聚类数的新手。现在我的任务是分析两组数据并使用肘部和轮廓法确定其最佳Kmean。

X 代表我标准化前的原始数据。

我用肘法看不同k值下的wcss值,用剪影法看剪影分数

from sklearn import preprocessing
from sklearn.metrics import silhouette_score

# normalize the data attributes
normalized = preprocessing.normalize(X)
#print("Normalized Data = ", normalized)

Sum_of_squared_distances = []
K = range(2,15)
for k in K:
    km = KMeans(n_clusters=k)
    km = km.fit(normalized)
    Sum_of_squared_distances.append(km.inertia_)

plt.plot(K, Sum_of_squared_distances, 'bx-')
plt.xlabel('Number of clusters')
plt.ylabel('Sum_of_squared_distances')
plt.title('Elbow Method For Optimal k')
plt.show()    
    


sil = []

for k in range(2, 15):
    kmeans = KMeans(n_clusters = k).fit(normalized)  
    preds = kmeans.fit_predict(normalized)
    sil.append(silhouette_score(normalized, preds, metric = 'euclidean'))


plt.plot(range(2, 15), sil, 'bx-')
plt.title('Silhouette Method For Optimal k')
plt.xlabel('Number of clusters')
plt.ylabel('Sil')
plt.show()

for i in range(len(sil)):
    print(str(i+2) +":"+ str(sil[i]))    

有人可以建议我如何选择最佳的 Kmean 吗?因为据我了解

【问题讨论】:

    标签: python cluster-analysis


    【解决方案1】:

    您的 plt.show() 的结果是什么?您不应该查看绘图并查看折线图开始水平的k值吗?在下图中,最佳 k 值为 5。请参阅https://blog.cambridgespark.com/how-to-determine-the-optimal-number-of-clusters-for-k-means-clustering-14f27070048f。这也是我在大学里学会确定k值的方法

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 2021-02-07
      • 2018-10-25
      • 2013-02-28
      • 2018-10-11
      • 1970-01-01
      • 2018-12-17
      • 2013-04-23
      • 2012-01-30
      相关资源
      最近更新 更多