Python是一種流行的編程語言,同時也有眾多強大的機器學習庫,其中包括了聚類算法。在使用聚類算法時,一個重要的問題是如何選擇聚類的數量。在Python中,有幾種方法可以幫助確定聚類數量。
from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score import numpy as np #創建數據 X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]]) #迭代嘗試不同數量聚類 for n_clusters in range(2, 5): clusterer = KMeans(n_clusters=n_clusters) cluster_labels = clusterer.fit_predict(X) silhouette_avg = silhouette_score(X, cluster_labels) print("For n_clusters =", n_clusters, "The average silhouette_score is :", silhouette_avg) #輸出結果 # For n_clusters = 2 The average silhouette_score is : 0.578 # For n_clusters = 3 The average silhouette_score is : 0.505 # For n_clusters = 4 The average silhouette_score is : 0.372
該代碼使用scikit-learn庫中的KMeans算法和silhouette_score指標,迭代不同的聚類數量,并計算出每種聚類數量的輪廓系數。輪廓系數越接近1表示聚類效果越好;輪廓系數越接近-1表示聚類效果越差。
除此之外,還有其他一些方法,如手肘法、Gap統計量等,都可以幫助確定聚類的數量。可以根據具體情況選擇不同的方法。
上一篇vue發布壓縮js