簡單粗暴理解與實現機器學習之聚類算法(二):聚類算法api初步使用、案例

聚類算法

學習目標

  • 掌握聚類算法實現過程
  • 知道K-means算法原理
  • 知道聚類算法中的評估模型
  • 說明K-means的優缺點
  • 瞭解聚類中的算法優化方式
  • 應用Kmeans實現聚類任務
    在這裏插入圖片描述

6.2 聚類算法api初步使用

1 api介紹

  • sklearn.cluster.KMeans(n_clusters=8)
    • 參數:
      • n_clusters:開始的聚類中心數量
        • 整型,缺省值=8,生成的聚類數,即產生的質心(centroids)數。
    • 方法:
      • estimator.fit(x)
      • estimator.predict(x)
      • estimator.fit_predict(x)
        • 計算聚類中心並預測每個樣本屬於哪個類別,相當於先調用fit(x),然後再調用predict(x)

2 案例

隨機創建不同二維數據集作爲訓練集,並結合k-means算法將其聚類,你可以嘗試分別聚類不同數量的簇,並觀察聚類效果:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-LHO7B8ml-1583251021755)(../images/cluser_demo1.png)]

聚類參數n_cluster傳值不同,得到的聚類結果不同

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-osr2fTeI-1583251021756)(../images/cluster_demo2.png)]

2.1流程分析

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JhlOdG5V-1583251021756)(../images/cluster_demo3.png)]

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))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章