聚類算法
學習目標
- 掌握聚類算法實現過程
- 知道K-means算法原理
- 知道聚類算法中的評估模型
- 說明K-means的優缺點
- 瞭解聚類中的算法優化方式
- 應用Kmeans實現聚類任務
6.2 聚類算法api初步使用
1 api介紹
- sklearn.cluster.KMeans(n_clusters=8)
- 參數:
- n_clusters:開始的聚類中心數量
- 整型,缺省值=8,生成的聚類數,即產生的質心(centroids)數。
- n_clusters:開始的聚類中心數量
- 方法:
- estimator.fit(x)
- estimator.predict(x)
- estimator.fit_predict(x)
- 計算聚類中心並預測每個樣本屬於哪個類別,相當於先調用fit(x),然後再調用predict(x)
- 參數:
2 案例
隨機創建不同二維數據集作爲訓練集,並結合k-means算法將其聚類,你可以嘗試分別聚類不同數量的簇,並觀察聚類效果:
聚類參數n_cluster傳值不同,得到的聚類結果不同
2.1流程分析
2.2 代碼實現
1.創建數據集
import matplotlib.pyplot as plt
from sklearn.datasets.samples_generator import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import calinski_harabaz_score
# 創建數據集
# X爲樣本特徵,Y爲樣本簇類別, 共1000個樣本,每個樣本4個特徵,共4個簇,
# 簇中心在[-1,-1], [0,0],[1,1], [2,2], 簇方差分別爲[0.4, 0.2, 0.2, 0.2]
X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1, -1], [0, 0], [1, 1], [2, 2]],
cluster_std=[0.4, 0.2, 0.2, 0.2],
random_state=9)
# 數據集可視化
plt.scatter(X[:, 0], X[:, 1], marker='o')
plt.show()
2.使用k-means進行聚類,並使用CH方法評估
y_pred = KMeans(n_clusters=2, random_state=9).fit_predict(X)
# 分別嘗試n_cluses=2\3\4,然後查看聚類效果
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.show()
# 用Calinski-Harabasz Index評估的聚類分數
print(calinski_harabaz_score(X, y_pred))