EX 10:_K-means群聚法

https://scikit-learn.org/stable/auto_examples/cluster/plot_cluster_iris.html#sphx-glr-auto-examples-cluster-plot-cluster-iris-py

此範例顯示了K-means演算法使用不同數量cluster,以及不同初始值設定產生的結果

  1. 利用 datasets.load_iris() 來讀取內建資料庫

  2. 利用 KMeans 做分類

  3. 利用 Axes3D 秀出結果

(一)引入函式庫

引入函式如下:

  1. numpy : 產生陣列數值

  2. matplotlib.pyplot : 用來繪製影像

  3. mpl_toolkits.mplot3d import Axes3D : 繪製3D圖形

  4. sklearn.cluster import KMeans : 切割cluster

  5. 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