機器學習資料集 - Iris dataset
當我們有一個新的機器學習演算法時,為展現其效果以及與其他演算法的差異,我們可以使用共通的資料集(Dataset)來進行測試與比較,才有一個共同的標準。本篇將簡單介紹 Iris dataset 內容與結構,之後也會持續介紹許多常用的 Dataset 相關內容。
Iris dataset 是一個古典的花朵資料集,由英國統計學家 Ronald Fisher 爵士在1936年時,對加斯帕半島上的鳶尾屬花朵所提取的花瓣花萼的長寬數據資料,依照山鳶尾,變色鳶尾,維吉尼亞鳶尾三類進行標示,共150筆資料。
Attributes and Labels
Iris dataset 中包含四種屬性 (Atrributes) 與三種花卉標籤 (Labels)
Attributes
- Sepal length: 花萼長度 (cm)
- Sepal width: 花萼寬度 (cm)
- Petal length: 花瓣長度 (cm)
- Petal width: 花瓣寬度 (cm)
Labels
- setosa: 山鳶尾
- versicolor: 變色鳶尾
- virginica: 維吉尼亞鳶尾
表格顯示如下
Sepal Length | Sepal Width | Petal Length | Petal Width | Label |
---|---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 | setosa |
4.9 | 3.0 | 1.4 | 0.2 | setosa |
7.0 | 3.2 | 4.7 | 1.4 | versicolor |
6.4 | 3.2 | 4.5 | 1.5 | versicolor |
6.3 | 3.3 | 6.0 | 2.5 | virginica |
5.8 | 2.7 | 5.1 | 1.9 | virginica |
… | … | … | … | … |
How to use
因 Iris dataset 已經常被拿來使用作為資料科學的範例,因此有許多 Machine Learning 套件已經包含該資料集,或有需求時可直接下載到 Local 端加以使用。我們以 Python 機器學習資料集 Scikit-learn 為例,
from sklearn import datasets
iris = datasets.load_iris()
即可讀入 Iris dataset,而輸入 print(iris.DESCR)
可顯示該資料集詳細描述
Iris plants dataset
--------------------
**Data Set Characteristics:**
:Number of Instances: 150 (50 in each of three classes)
:Number of Attributes: 4 numeric, predictive attributes and the class
...
...
其中 Attribute 資料在 iris.data
,而 Label 在 iris.target
中
print(iris.data[:2])
# show [[5.1 3.5 1.4 0.2], [4.9 3.0 1.4 0.2]]
print(iris.target[:2])
# show [0, 0]
代表第一筆資料 [5.1, 3.5, 1.4, 0.2]
與第二筆資料 [4.9 3.0 1.4 0.2]
對應到的 Label 為 0。而每個 feature 與 label 對應到的特徵內容可使用 feature_names
與 target_names
來顯示
print(iris.feature_names)
# ['sepal length (cm)',
# 'sepal width (cm)',
# 'petal length (cm)',
# 'petal width (cm)']
print(iris.target_names)
# ['setosa', 'versicolor', 'virginica']
feature 顯示代表 iris.data[0][0] = 5.1
為 sepal lenght,而 iris.data[0][1] = 3.5
代表 sepal width 等。而 Label 0
代表 setosa。
了解該資料集的結構後,我們就可以對該資料進行一些簡單的應用,如 K-mean 分群 (Clustering) 等,方法可參考 Scikit-learn 上的範例。