機器學習之使用sklearn構建據類模型,並且評價模型

Turing's Cat發表於2020-12-31

學習目標:

構建並且評價據類模型(粗糙模型案例)


學習內容:

1、 使用sklearn估計器構建K-Means聚類模型
2、 評價上述模型


學習產出:(複製貼上可執行程式碼)

#@Author     :xuXX
#@Time       :2020/12/31
#@environment:python3.8
#@Software   :pycharm
#@notes      :scikit-learn的使用示例,構建並且評價據類模型
from sklearn.datasets import load_iris
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import KMeans
iris = load_iris() #載入sklearn自帶的一個資料集
iris_data = iris.data  #或者iris_data = iris['data']
iris_target = iris.target
iris_names = iris.feature_names
scale = MinMaxScaler().fit(iris_data)  #訓練規則
iris_scaler = scale.transform(iris_data)   #應用規則到(訓練)資料集上
kmeans = KMeans(n_clusters=3,random_state=123).fit(iris_scaler) #構建並且訓練模型
print('構建的K-means模型:\n',kmeans)
#使用訓練出的模型來預測pred01輸入例項的花類別
pred01 = [[1.5,1.5,1.5,1.5
],[62,9,15,82]]
print(kmeans.predict(pred01))

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
#使用tsne進行降維
tsne = TSNE(n_components=2,init='random',random_state=177).fit(iris_data)
df = pd.DataFrame(tsne.embedding_)
#將據類結果儲存在df列表中
df['labels'] = kmeans.labels_
#提取不同標籤的資料
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.savefig('聚類結果.png')
plt.show()
#評價據聚類模型

from sklearn.metrics import fowlkes_mallows_score
for i in range(2,7):
    kmeans = KMeans(n_clusters=i,random_state=123).fit(iris_data)
    score = fowlkes_mallows_score(iris_target,kmeans.labels_)
    print('iris資料聚%d類FMI評分是:%f'%(i,score))

結果:在這裡插入圖片描述

相關文章