使用python的给定数据集的最佳k-均值

使用python的给定数据集的最佳k-均值,python,cluster-analysis,Python,Cluster Analysis,我对python和集群的最佳数量还不熟悉。现在我的任务是分析两组数据,并使用肘部和轮廓法确定其最佳Kmean X表示标准化之前的原始数据 我使用肘部法查看不同k值下的wcss值,使用轮廓法查看轮廓分数 from sklearn import preprocessing from sklearn.metrics import silhouette_score # normalize the data attributes normalized = preprocessing.normalize(

我对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吗?因为根据我的理解

你的plt.show()的结果是什么?难道你不应该看一看图,看看线图开始水平的k值吗?在下图中,最佳k值为5。看见这也是我在大学里学习确定k值的方法