聚類的Python實現(三):建模與分羣結果分析
建模
數據的前期處理工作能佔到數據挖掘工作量的70-80%,依賴於sklearn這些機器學習庫,建模實際上只需要簡單的幾行代碼就能夠實現。
# 調用k-means演算法,進行聚類分析
from sklearn.cluster import KMeans
?
K = 8 #設置分羣數量
kmodel = KMeans(n_clusters = K, n_jobs = 6)
kmodel.fit(Zdata) #使用標準化後的數據帶入建模
?
#模型參數,通常只需要設置分羣數n_clusters,其他參數使用預設值即可
#KMeans(algorithm=auto, copy_x=True, init=k-means++, max_iter=300,
#n_clusters=8, n_init=10, n_jobs=6, precompute_distances=auto,
#random_state=None, tol=0.0001, verbose=0)
分羣結果分析
作為無監督學習,聚類的結果需要我們進行分析,根據實際業務賦予各分羣具體含義。 個人習慣於使用 質心數據與各分羣的描述統計,結合業務概念對各分組進行命名,打上標籤。
質心數據與各組觀測數
r1 = pd.Series(kmodel.labels_).value_counts() #統計各個類別的數目
r2 = pd.DataFrame(kmodel.cluster_centers_) #找出聚類中心
r = pd.concat([r2, r1], axis = 1) #橫向連接(0是縱向),得到聚類中心對應的類別下的數目
r.columns = list(data.columns) + [count] #重命名錶頭
r
分羣描述統計
#源數據各觀測點添加分羣標籤
g = pd.concat([data, pd.Series(kmodel.labels_, index=data.index)], axis=1)
g.columns = list(data.columns) + [用戶羣]
?
#分別篩選各分羣數據,進行描述性統計
data0=g[g[用戶羣]==0] #篩選出用戶羣0
data0_d = data0.describe()
推薦閱讀: