python機器學習_(1)鳶尾花的分類
阿新 • • 發佈:2018-11-11
鳶尾花的分類是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