使用sklearn估計器構建K-Means聚類模型
阿新 • • 發佈:2018-12-27
例項要求:以sklearn庫自帶的iris資料集為例,使用sklearn估計器構建K-Means聚類模型,並且完成預測類別功能以及聚類結果視覺化。
例項程式碼:
import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.preprocessing import MinMaxScaler from sklearn.cluster import KMeans from sklearn.manifold import TSNE''' 構建K-Means模型 ''' iris = load_iris() iris_data = iris['data'] # 提取資料集中的資料 iris_target = iris['target'] # 提取資料集中的標籤 iris_names = iris['feature_names'] # 提取特徵名 scale = MinMaxScaler().fit(iris_data) # 訓練規則 iris_dataScale = scale.transform(iris_data) # 應用規則 kmeans = KMeans(n_clusters=3,random_state=123).fit(iris_dataScale) #構建並訓練模型 print('構建的K-Means模型為:\n',kmeans) result = kmeans.predict([[1.5,1.5,1.5,1.5]]) print('花瓣花萼長度寬度全為1.5的鳶尾花預測類別為:',result[0]) ''' 聚類結果視覺化 ''' tsne = TSNE(n_components=2,init='random',random_state=177).fit(iris_data) # 使用TSNE進行資料降維,降成兩維 df = pd.DataFrame(tsne.embedding_) #將原始資料轉換為DataFrame df['labels'] = kmeans.labels_ # 將聚類結果儲存進df資料表中 df1 = df[df['labels']==0] df2 = df[df['labels']==1] df3 = df[df['labels']==2] # fig = plt.figure(figsize=(9,6)) # 繪製圖形 設定空白畫布,並制定大小 plt.plot(df1[0],df1[1],'bo',df2[0],df2[1],'r*',df3[0],df3[1],'gD') plt.show() # 顯示圖片
例項結果:
構建的K-Means模型為:
花瓣預測結果:
聚類結果視覺化: