[Python]初心者筆記15(機器學習:實例練習:做鳶尾花的分類,運用真實世界數據,練習用SVM做分類預測,練習畫圖畫出預測結果,練習畫圖畫出預測結果的錯誤的部分)

[Python]初心者筆記15(機器學習:實例練習:做鳶尾花的分類,運用真實世界數據,練習用SVM做分類預測,練習畫圖畫出預測結果,練習畫圖畫出預測結果的錯誤的部分)

#進行數據分析之前常要引用的函式庫
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

#sklearn套件直接提供現實世界的鳶尾花的花萼與花瓣的長寬度統計資料
from sklearn.datasets import load_iris

iris = load_iris()

#可以印出來看看資料Iris Plants Database
#print(iris.DESCR)

#X是花萼與花瓣的長度、寬度的原始資料
#Y是將花分類之後的正確答案
X = iris.data
Y = iris.target

#以第一筆為例
#花萼長度 花萼寬度 花瓣長度 花瓣寬度
#以下取法將可以取到花瓣的長度以及花瓣的寬度
X = X[:,2:]

#進行機器學習的時候,就需區分 訓練用data 以及 測試用data
from sklearn.model_selection import train_test_split

#train_test_split將會自動把資料分類為 x_train, x_test, y_train, y_test 這四種
#測試資料佔的比例暫訂為20%, 因此test_size = 0.2
#random_state請輸入一個隨便的數字
x_train, x_test, y_train, y_test = train_test_split(X,Y,
                                                    test_size = 0.2,
                                                    random_state=87
                                                   )
												   
#花瓣的長度:x_train[:,0]
#花瓣的寬度:x_train[:,1]
#c=分類答案的陣列
#顯示在畫面上將會有三種顏色的花瓣
plt.scatter(x_train[:,0],x_train[:,1], c=y_train)

#匯入SVM支持向量機函式庫的分類功能SVC
from sklearn.svm import SVC

#然後要開一台SVC
clf = SVC()

#開始訓練:clf.fit(輸入資料,正確答案)
clf.fit(x_train,y_train)

#帶入測試資料試試看預測結果
y_test_predict = clf.predict(x_test)

#畫出測試資料的預測結果看看
#從圖看起來,似乎預測挺成功的
plt.scatter(x_test[:,0],x_test[:,1], c=y_test_predict)

#可以更精準的判斷到底有幾個點分類錯誤的方式:剪去原本的正確答案y_test:c=y_test_predict - y_test
#當預測正確時,c=y_test_predict - y_test應該為0,預測錯誤的話c=y_test_predict - y_test就是1
#由此可以發現只有一個點是預測錯誤的(這個點的顏色與其他所有的點的顏色不同)
plt.scatter(x_test[:,0],x_test[:,1], c=y_test_predict - y_test)												   

參考資料:
成為python數據分析達人的第一課(自學課程)
http://moocs.nccu.edu.tw/course/123/intro