EX 10:_K-means群聚法
此範例顯示了K-means演算法使用不同數量cluster,以及不同初始值設定產生的結果
利用 datasets.load_iris() 來讀取內建資料庫
利用 KMeans 做分類
利用 Axes3D 秀出結果
(一)引入函式庫
引入函式如下:
numpy : 產生陣列數值
matplotlib.pyplot : 用來繪製影像
mpl_toolkits.mplot3d import Axes3D : 繪製3D圖形
sklearn.cluster import KMeans : 切割cluster
sklearn import datasets : 用來匯入影像資料庫
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.cluster import KMeans
from sklearn import datasets隨機設定種子,可以用在 KMeans 裡 n_init 的參數
iris = datasets.load_iris() : 將一個dict型別資料存入iris
顯示
說明
('target_names', (3L,))
共有三種鳶尾花 setosa, versicolor, virginica
('data', (150L, 4L))
有150筆資料,共四種特徵
('target', (150L,))
這150筆資料各是那一種鳶尾花
DESCR
資料之描述
feature_names
四個特徵代表的意義,分別為 萼片(sepal)之長與寬以及花瓣(petal)之長與寬
(二)Clustering
設定 KMeans 參數,各項參數設定如下:
n_clusters : 需要計算出的群集數
init : 設定初始化方式
n_init : 使用不同 centroid seeds 運行 k-means 算法的時間
Axes3D : 定義一個3D的圖形 est.fit : 根據上面 estimators 去 fit 資料庫的圖 ax.scatter : 畫散點圖,後面的參數用來調整顏色 ax.dist : 設定與物體之間的距離

np.choose : 將原本 label 順序的(0 1 2)改成(1 2 0) ax.text3D : 將不同label的資料標上個別物種類名稱,裡面 X[y == label, 3].mean() 用在調整 text 的 X Y Z 軸位置

(三)完整程式碼
Python source code:plot_cluster_iris.py
https://scikit-learn.org/stable/_downloads/plot_cluster_iris.py
Last updated