1. 程式人生 > >python 使用K-Means演算法對資料進行聚類

python 使用K-Means演算法對資料進行聚類

K-Means是聚類演算法的一種,以距離來判斷資料點間的相似度並對資料進行聚類。前面的文章中我們介紹過K-Means聚類演算法的原理及實現。本篇文章使用scikit-learn庫對資料進行聚類分析。


準備工作

開始之前先匯入要使用的各種庫檔案,首先是scikit-learn庫,然後是數值計算numpy和科學計算pandas庫,以及用於繪製圖表的matplotlib庫檔案。

1234from sklearn.cluster import KMeansimport numpy as npimport pandas as pdimport matplotlib.pyplot as plt

讀取並檢視資料表

讀取用於聚類的資料並建立名為loan_data的資料表,用於後續的聚類分析。

12#讀取用於聚類的資料,並建立資料表loan_data=pd.DataFrame(pd.read_csv('loan_data.csv',header=0))
12#檢視資料表loan_data.head()

%e6%95%b0%e6%8d%ae%e8%a1%a8%e9%a2%84%e8%a7%88

12345#查看錶中的各列的名稱loan_data.columnsIndex(['member_id', 'loan_amnt', 'term', 'grade', 'emp_length', 'annual_inc','issue_d', 'loan_status', 'total_pymnt_inv', 'total_rec_int'],dtype='object')

我們對資料表中的貸款金額和使用者年收入進行聚類,這裡先繪製兩個維度的散點圖,觀察分佈情況並與後續的聚類結果進行對比。

12345678#繪製散點圖plt.rc('font', family='STXihei', size=10)plt.scatter(loan_data['loan_amnt'],loan_data['annual_inc'],50,color='blue',marker='+',linewidth=2,alpha=0.8)plt.xlabel('貸款金額')plt.ylabel('年收入')plt.xlim(0,25000)plt.grid(color='#95a5a6',linestyle='--', linewidth=1,axis='both',alpha=0.4)plt.show()

%e6%94%b6%e5%85%a5%e4%b8%8e%e9%87%91%e9%a2%9d%e6%95%a3%e7%82%b9%e5%9b%be

K-Means聚類

我們資料表中的貸款金額和使用者年收入兩個維度進行聚類,這裡先對資料進行預處理,然後設定類別數量。

123456#設定要進行聚類的欄位loan = np.array(loan_data[['loan_amnt','annual_inc']])#設定類別為3clf=KMeans(n_clusters=3)#將資料代入到聚類模型中clf=clf.fit(loan)