Professional Documents
Culture Documents
鳶尾花分類 Python 範例
鳶尾花分類 Python 範例
SVM 做資料分類
與完整程式碼
淡江資工 LifeLab
目標:讓電腦分類三種鳶尾花
鳶尾花範例集 iris.csv,裡面有150筆資料,每50筆分別為 setosa、versicolor、virginica 三種鳶尾花
辨別區分它們的方法,是藉由它們的四個特徵,即 sepal_length、sepal_width、petal_length、petal_width
(習慣上,在監督式學習中,如果資料有 n 個特徵,
那麼第 n+1 個欄位會放上它屬於哪個類別)
需先安裝 Python
來執行本範例的程式碼
使用
Python + Sklearn
做機器學習 因為本範例程式中的機器學習
是使用 Sklearn 函式庫
安裝好 Python 後,接著安裝 Sklearn 函式庫
使程式能夠順利運行
Python 讀取
CSV檔 執行結果
注意:
請將 iris.csv 檔和你的程式放在同一個
資料夾,這樣程式才找的到該檔案。
亦即,我們要訓練出一個 func,
使 Y = func(X)
在iris.csv資料中,
有一筆資料前四個欄位值為 [6.7, 3.1, 5.6, 2.4]
X = iris[:,: label_index]
Y = le.fit_transform(iris[:, label_index])
X
Y
將 X 和 Y 準備好後,我們需要一個「引擎」,
讓機器學習模型可以建立。
器學習模型 https://en.wikipedia.org/wiki/Support-vector_machine
x_train
x_test
y_test_predict = clf.predict(x_train)
print("Acutal: ");
print(x_test);
print("Predicted: ");
print(y_test_predict);
剛才的範例中,訓練用的題目和測試的題目,完全一樣
clf.fit(x_train,x_test)
y_test_predict = clf.predict(x_train)
將資料拆分為 若未來出現從未看過的題目
訓練集和測試集 該模型可能無法正確答對
#將資料分割為訓練集與測試集
import numpy as np
np.random.seed(5)
clf = SVC()
clf.fit(x_train, y_train)
y_test_predict = clf.predict(x_test)
print("Acutal: ");
print(y_test);
print("Predicted: ");
print(y_test_predict);
結果討論
• 我們發現並不是所有的鳶尾花
的類別都被正確分類
• 如何改進?
• 調整 SVM 的參數
• 捨棄 SVM 改用其他分類器
• 檢討資料本身是否就有問題