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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM