k中心点聚类算法伪代码_聚类算法之——K-Means、Canopy、Mini Batch K-Means
K-Means||算法
K-Means||算法是為了解決K-Means++算法缺點而產生的一種算法;
主要思路是改變每次遍歷時候的取樣規則,并非按照K-Means++算法每次遍歷只獲取一個樣本,而是每次獲取K個樣本,重復該取樣操作O(logn)次(n是樣本的個數),然后再將這些抽樣出來的樣本聚類出K個點,最后使用這K個點作為K-Means算法的初始聚簇中心點。實踐證明:一般5次重復采用就可以保證一個比較好的聚簇中心點。
整體步驟
偽代碼
采用了一個采樣因子l,第1步隨機初始化一個中心點,第2-6步計算出滿足概率條件的多個候選中心點C,候選中心點的個數可能大于k個,所以通過第7-8步來處理。第7步給C中所有點賦予一個權重值
,這個權重值表示距離x點最近的點的個數。第8步使用k-means算法聚類出這些候選點的k個聚類中心。Canopy算法
Canopy算法屬于一種“粗”聚類算法,速度較快,但精度較低。 與傳統的聚類算法(如K-Means)不同,Canopy聚類最大的特點是不需要事先指定k值(即聚類的個數),因此具有很大的實際應用價值。
步驟如下:
Canopy算法得到的最終結果的值,聚簇之間是可能存在重疊的,但是不會存在某個對象不屬于任何聚簇的情況。
Canopy算法過程圖形說明
Canopy+ K-Means聚類算法
由于K-Means算法存在初始聚簇中心點敏感的問題,常用使用Canopy+K-Means算法進行模型構建,這種形式聚類算法聚類效果良好。
步驟
優點
Mini Batch K-Means算法
Mini Batch K-Means算法是K-Means算法的一種優化變種,采用小規模的數據子集(每次訓練使用的數據集是在訓練算法的時候隨機抽取的數據子集)減少計算時間,同時試圖優化目標函數;Mini Batch K-Means算法可以減少K-Means算法的收斂時間,而且產生的結果效果只是略差于標準K-Means算法。
算法步驟如下
Python實現
import time import matplotlib.pyplot as plt import matplotlib from sklearn.cluster import MiniBatchKMeans from sklearn.datasets import make_blobs # 導入產生模擬數據的方法 matplotlib.rcParams['font.sans-serif'] = [u'SimHei'] matplotlib.rcParams['axes.unicode_minus'] = False# 生成模擬數據 k = 5 # 給定聚類數量 X, Y = make_blobs(n_samples=1000, n_features=2, centers=k, random_state=1) s = time.time() km = MiniBatchKMeans(n_clusters = k, batch_size = 100) km.fit(X) print("用sklearn內置的Mini Batch K-Means算法聚類耗時:", time.time() - s)label_pred = km.labels_ # 獲取聚類后的樣本所屬簇對應值 centroids = km.cluster_centers_ # 獲取簇心# 繪制Mini Batch K-Means結果 # 未聚類前的數據分布 plt.subplot(121) plt.scatter(X[:, 0], X[:, 1], s=50) plt.title("未聚類前的數據分布") plt.subplots_adjust(wspace=0.5)plt.subplot(122) plt.scatter(X[:, 0], X[:, 1], c=label_pred, s=50, cmap='viridis') plt.scatter(centroids[:, 0], centroids[:, 1], c='red', marker='o', s=100) plt.title("Mini Batch K-Means算法聚類結果") plt.show()運行結果
總結: Mini Batch K-Means 算法比 K-Means 算法運行的時間大大減少,并且效果也差不多。
相關鏈接
K-Means算法python代碼
聚類算法總結
Canopy聚類算法
K-Means||算法
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的k中心点聚类算法伪代码_聚类算法之——K-Means、Canopy、Mini Batch K-Means的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cshrc设置 ic618_.cshrc
- 下一篇: ps里面怎么插入流程图_photosho