建模

數據的前期處理工作能佔到數據挖掘工作量的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()

推薦閱讀:

相關文章