聚類分析 | 概述、 k均值聚類算法 KMeans 處理數據及可視化


一 概述

  • 聚類分析目的
    • 將大量數據集中具有“相似”特征的數據點或樣本划分為一個類別
  • 常見應用場景
    • 在沒有做先驗經驗的背景下做的探索性分析
    • 樣本量較大情況下的數據預處理工作
    • 將數值類的特征分成幾個類別
  • 聚類分析能解決的問題包括
    • 數據集可以分為幾類
    • 每個類別有多少樣本量
    • 不同類別中各個變量的強弱關系如何
    • 不同類別的典型特征是什么
  • k均值聚類算法 KMeans
    • 注意事項
      • 需要處理異常值
      • 如果建模的特征中,量綱差距比較大,需要做歸一化/標准化
    • 創建KMeans對象 建模
      • n_cluster 聚類個數
      • init='k-means++' 在選點的時候,找距離初始點比較遠的點
      • random_state  隨機種子數
      • kmeans.inertia_ 簇內誤差平方和
      • 輪廓系數 metrics.silhouette_score()
      • kmeans_model.cluster_centers_ 聚類中心點
      • kmeans_model.labels_ 聚類之后的標簽

二 案例

1 數據准備

import pandas as pd
df = pd.read_csv('data.csv')

# 使用最后兩列作為分群依據
x = df.iloc[:,3:].values

 

 2 創建 KMeans 模型,進行聚類【核心代碼】

# 導包
from sklearn.cluster import KMeans

# 模型創建
kmeans_model = KMeans(n_clusters=5, init='k-means++', random_state= 11)

# 進行聚類處理
y_kmeans = kmeans_model.fit_predict(x)

 此時已經將數據 分成了5類,將標簽加入數據中

 

 3 聚類結果可視化

# 導入可視化工具包
import matplotlib.pyplot as plt
%matplotlib inline

# 顏色和標簽列表
colors_list = ['red', 'blue', 'green','yellow','pink']
labels_list = ['Traditional','Normal','TA','Standard','Youth']

# 需要將DataFrame轉成ndarray,才能進行 x[y_kmeans==i,0]
x = x.values

for i in range(5):
    plt.scatter(x[y_kmeans==i,0], x[y_kmeans== i,1], s=100,c=colors_list[i],label=labels_list[i])

# 聚類中心點
plt.scatter(kmeans_model.cluster_centers_[:,0],kmeans_model.cluster_centers_[:,1], s=300,c='black',label='Centroids')

plt.legend()
plt.xlabel('Annual Income (k$)')
plt.ylabel('Spending Score (1-100)')
plt.show()

 

4 評估聚類個數

# 用於盛放簇內誤差平方和的列表
distortion = []

for i in range(1,11):
    kmeans = KMeans(n_clusters=i,init='k-means++', random_state=11)
    kmeans.fit(x)
    distortion.append(kmeans.inertia_)
    
plt.plot(range(1,11), distortion)

plt.title('The Elbow Method')
plt.xlabel('Number of cluster')
plt.ylabel('Distortion')
plt.show()

 

完成辣!

附幾個變量說明,便於復習

 

========================

 

 

========================

 

 本文僅用於學習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM