1. 程式人生 > >python機器學習_(1)鳶尾花的分類

python機器學習_(1)鳶尾花的分類

鳶尾花的分類是python機器學習中比較經典的一個入門式教學課程,
屬於監督學習演算法
包括四個方面,訓練,測試,評估,評估
此次記錄也適合從這四個方面出發
一:訓練
利用已知的鳶尾花資料構建機器學習模型,用於預測新測量的鳶尾花的品種。
鳶尾花的資料哪裡來呢?有一個開源專案叫做sciket-learn,裡面有鳶尾花的150個數據集。
1.1安裝sciket-learn

pip install sciket-learn

1.2安裝必要的工具和庫檔案

pip install numpy scipy matplotlib ipython pandas

直接使用命令安裝上述都是預設安裝最新版本的軟體,我這裡安裝完之後的版本分別是:
pandas:0.23.4 修改和操作表格的
matplotlib:2.2.3 將資料繪製成影象的
Numpy:1.15.2 用來科學計算的,就是將資料變換成自己想要的格式
SciPy:1.1.0 功能和Numpy差不多
IPython:5.8.0 沒什麼用
scikit-learn:1.1.0 匯入鳶尾花資料的
1.3分配資料


上程式碼:

#coding=utf-8
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
#匯入三個庫
iris_dataset = load_iris()
#載入iris_dataset資料集
trainData,testData,trainResult,testResult = train_test_split(iris_dataset["data"],iris_dataset["target"],random_state = 0)
#train_test_split函式將iris_dataset資料集中的['data']資料依據['target']標籤分類為75%的訓練集和25%的測試集。 #iris_dataset是一個字典型別的資料,有用6個key和對應的值,其中key分別為:['target', #'DESCR', 'target_names', 'feature_names', 'data', 'filename'] #可以嘗試iris_dataset.keys()和iris_dataset.values()檢視相應的資料,比如檢視target_names標籤對應的值可以寫作:iris_dataset['target_names']

1.4構建演算法

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors = 1)
knn.fit(trainData,trainResult)
#K近鄰演算法:演算法會在訓練集中尋找與這個新資料點距離最近的k個鄰居,根據他們的類別做出預測。
#這裡讓knn進行大量的訓練,擁有大量資料的累積後,使得knn擁有了一定預測新資料型別的能力。

二:測試與評估
此時的knn今時不同往日了,訓練了那麼多,是時候試試水了,但是不能貿然拿去用吧,還是先用測試集測試一下,剛剛分配資料集的時候不是還分配了25%的資料用來測試嗎。試一試

testPrediction = knn.predict(testData)
#testData這些資料的型別是已知的---testResult,裡面包含的是testData真實的結果,我們拿預測的結果和真實結果比對一下,就可以知道這個演算法的預測準確的能力了吧。試一試
print "Test set score is :{:.2f}".format(np.mean(testPrediction == testResult))
#這樣可以打印出testPrediction和testResult之間的差異比例

三:預測
用一組新的資料來試一試

newIRIS = [[5,2.0,1,0.2]]
#四個資料分別代表:花萼長度,花萼寬度,花瓣長度,花瓣寬度
#為什麼用兩個中括號括起來呢?因為knn.predict的資料資料必須是一個二維陣列
a = knn.predict(newIRIS)
print a