聚類算法
聚類算法簡介:
聚類算法是一種典型的無監督學習算法,主要用於將相似的樣本自動歸到一個類別中;
聚類算法api初步使用:
from sklearn.datasets.samples_generator import make_blobs
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 生成數據
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.figure(figsize=(20,8))
plt.scatter(x[:,0],x[:,1],c=y)
plt.show()
# 用KMeans進行分類
# 建立模型
estimator = KMeans(n_clusters=4)
# 訓練模型
estimator.fit(x)
# 獲取分類結果
y_predict = estimator.predict(x)
# 繪製散點圖
plt.figure(figsize=(20,8))
plt.scatter(x[:,0],x[:,1],c=y_predict)
plt.show()
聚類算法api初步使用:
(1)隨機選擇k個樣本作爲k個類別的質心
(2)計算所有樣本到質心的距離
(3)樣本離哪個質心近,就把它劃爲哪個類別
(4)劃分好k個類別之後,重新計算質心的座標,計算方法是取類別內的樣本的各個特徵值的平均值作爲新質心相應的座標
(5)重複2、3、4步,直到質心的座標不再變化爲止
聚類的模型評估:
誤差平方和:所有樣本到對應類別中心的距離(歐氏距離)的平方加起來
SC輪廓係數:取值[-1,1],其值越大越好,如果爲負值,則該樣本可能分類結果有誤
CH係數:分數越高聚類效果越好
算法優化:
Canopy算法,K-means++,二分k-means,k-medoids(k-中心聚類算法),Kernel k-means,ISODATA,Mini Batch K-Means