[Python實作] 聚類分析 K-Means / K-Medoids

K-means為一種向量量化方法的分類方式,屬於非監督式學習的一種。 本單元透過鳶尾花資料集,帶大家看到K-Means及K-Medoids在Python裡的實作。文末提供程式檔案,歡迎大家一起下載練習唷!

(一) 引入模組及資料準備

在K-Means中,我們主要用的模型在sklearn.cluster裡面的KMeans。
在K-Medoids中,主要模型在sklearn_extra.cluster裡面的KMedoids。
其他就是一些我們常用到的計算、繪圖模組,以及sklearn裡面所提供的資料集。
值得注意的是,K-Medoids的套件只支援3.6以上的Python版本。

from sklearn.cluster import KMeans
from sklearn_extra.cluster import KMedoids
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

接下來,我們會從sklearn的資料庫裡面下載鳶尾花資料集。因為K-Means及K-Medoids皆屬於沒有標籤的非監督式學習,因此今天我們僅會用到鳶尾花資料集裡特徵的部分,而不會用到標籤的部分。另外,為了方便視覺化,我們今天僅採用鳶尾花花瓣的長度及寬度兩個特徵。

iris=datasets.load_iris()
X=iris.data
X=X[:,2:4]

(二) K-Means

1. 模型建立與分群

KM=KMeans(n_clusters=3,init='random',random_state=5)
KM.fit(X)
KM.predict(X)

其中,
n_clusters: k值
init: ‘random’ / ‘k-means++’ / 自行給定
max_iter: 最多迭代次數
tol: 中心點誤差忍受 (最好不要設0)
random_state: 隨機種子

2. 圖像化顯示結果

plt.scatter(X[:,0],X[:,1],c=KM.predict(X))

(三) K-Medoids

1. 模型建立與分群

KMed=KMedoids(n_clusters=3,init='random',random_state=5)
KMed.fit(X)
KMed.predict(X)

2.圖像化顯示結果

plt.scatter(X[:,0],X[:,1],c=KMed.predict(X))

今天,我們學會了在Python裡如何實作K-Means與K-Medoids。你有什麼需要分群的資料嗎? 不要猶豫,快來試試看K-Means與K-Medoids!

程式檔案,歡迎於此下載

Share

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *