1. 程式人生 > >使用sklearn估計器構建K-Means聚類模型

使用sklearn估計器構建K-Means聚類模型

例項要求:以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模型為:

  

  花瓣預測結果:

  

  聚類結果視覺化: