作者:徐瑤佳 來源:人工智慧學習圈
工作內容:
聚類算法是在沒有給定劃分類別的情況下,根據數據樣本的相似度進行樣本分組的一種算法。聚類算法過程是無監督的,聚類模型可以將沒有類標記的數據集聚集為多個簇,歸為一類。常用在市場分析人員對消費者在資料庫中的具體情況分類成不同的消費群體,從而評估出不同類消費人群的一個消費模式和消費習慣。聚類算法在數據分析算法中也可以作為其預處理步驟,例如異常值識別。
工作目標:
a.使用sklearn估計器構建K-Means聚類模型
b.根據聚類模型評價指標對K-Means聚類模型進行評價
6.2.1 構建聚類模型的邏輯與說明
首先在處理數據的過程中我們先對我們的輸入內容進行考慮,即聚類輸入為一組未被進行標記的數據樣本,聚類通過不同數據之間的距離和相似度將這些數據樣本進行劃分,被劃分成若干組的數據根據樣本內部距離最小化,外部距離最大化的原則進行劃分,可理解成不同維度與同一維度下數據的距離。
常用的聚類算法如下:
sklearn常用的聚類算法模塊cluster提供的聚類算法及其適用範圍如下:
聚類算法實現實現需要Estimator,其具備fit和predict兩種方法,方法說明如下:
兩個方法的步驟與Transformer數據預處理的過程相似,下面使用鳶尾花數據,通過sklearn估計器對其構建K-Means聚類模型,步驟如下:
首先讀入數據:
iris=load_iris()irisData=iris.datairisTarget=iris.targetirisNames=iris.feature_names
得到數據樣本後生成規則:
Scaler=MinMaxScaler().fit(irisData)
應用Scaler:
irisDataScaler=Scaler.transform(irisData)
構建模型後訓練模型:即先構建KMeans模型後,利用fit方法將生成的數據規則樣本傳入訓練模型,輸出模型進行查看檢驗
kmeans=KMeans(n_clusters=3,random_state=23).fit(irisDataScaler)
print("the model:\n",kmeans)
輸出結果如下:
接下來進行對測試集標籤的預測:
rs=kmeans.predict([[2,2,2,2]])
print(rs[0])
輸出結果為:2
代碼如下:
聚類完成後為直觀的看出我們聚類後的效果,可以通過sklearn的manifold模塊中TSNE函數實現多維數據的可視化展現。
代碼如下:
可視化圖片如下:
我們可以發現本次聚類三類類別分布較為均勻,類與類之間界限明顯,聚類效果好