一、K-means clustering簡介
K-means clustering是一種數據聚類算法,其工作原理是將數據點劃分為k個聚類,每個聚類的中心點就是這個聚類內數據點的平均值。分類是通過算法最小化聚類中心和數據點之間的距離來實現的。
在這種算法中,k是預定的,也就是說,我們需要先確定聚類的數量。算法的總體目標是最小化每個數據點到其所屬聚類中心點的距離平方和。 這被稱為平方誤差和(誤差函數)。 因此,K-means clustering也被稱為SSE(clustering sum of squares)。
二、sklearn k-means模塊介紹
sklearn k-means是scikit-learn工具包中的一部分,在機器學習、計算機視覺、自然語言處理等領域都被廣泛應用。sklearn k-means是一種基於貪心算法的無監督學習方法,可以在不知道數據的標籤情況下自動將數據集劃分為k個不同的類別。
三、K-means clustering算法流程
1.隨機選擇k個數據點作為初始的簇中心。
2.依據每個數據點與k個中心點的距離,將數據點分配給距離最近的中心點所在的簇。
3.重新計算每個簇的中心點。
4.重複步驟2、3,直到能夠找到一種最好的聚類方式或到達預先設定的最大迭代次數。
四、sklearn k-means代碼實現
from sklearn.cluster import KMeans from sklearn.datasets import make_blobs # 創建一個數據集 X,y =make_blobs(n_samples=1000,n_features=2,centers=4,random_state=1) # 設置聚類的數量為4,初始化中心點的隨機種子為0 estimator = KMeans(n_clusters=4,random_state=0) # 訓練模型 estimator.fit(X) # 預測數據 y_pred =estimator.predict(X)
五、sklearn k-means常用參數介紹
1. n_clusters(int): 聚類數量
2. init:{‘k-means++’,’random’,ndarray}初始化方法,默認是k-means++,即選擇距離較遠的點作為初始簇中心。
3. n_init(int):有多少個不同基礎設施運行算法。
4. max_iter(int): 最大迭代數。
5. tol(float): 浮點型數字,代表在兩次迭代之間減少的平局平方誤差。
六、sklearn k-means優缺點
1. 優點:
(1)算法簡單直觀,易於實現。
(2)適用於大規模數據集,能減輕計算負擔。
(3)可以針對數據進行無監督分組及處理。
2. 缺點:
(1)需要預設簇數。
(2)初始點的選擇會影響聚類效果。
(3)對於密集型或規則型簇存在着一些局限性。
七、sklearn k-means案例應用
下面我們利用sklearn k-means算法來對鳶尾花數據進行聚類分析。
from sklearn.datasets import load_iris from sklearn.cluster import KMeans import matplotlib.pyplot as plt # 加載鳶尾花數據集 iris = load_iris() x = iris.data # 構建模型 kmeans = KMeans(n_clusters=3, random_state=0) # 訓練模型,輸出結果 y_kmeans = kmeans.fit_predict(x) print(y_kmeans) # 可視化結果 plt.scatter(x[:, 0], x[:, 1], c=y_kmeans, s=50, cmap='viridis') plt.show()
八、結論
本文詳細的介紹了sklearn k-means算法的基本原理、流程、應用及其優缺點。通過閱讀本文,相信讀者可以對sklearn k-means算法有進一步的了解,並可以在實際應用中更好的運用該算法。
原創文章,作者:EEDFG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/361501.html