**knn(k-nearest neighbor)工作原理:存在乙個樣本資料集合,也稱為訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類對應的關係。輸入沒有標籤的資料後,將新資料中的每個特徵與樣本集中資料對應的特徵進行比較,提取出樣本集中特徵最相似資料(最近鄰)的分類標籤。一般來說,我們只選擇樣本資料集中前k個最相似的資料,這就是k近鄰演算法中k的出處,通常k是不大於20的整數。最後選擇k個最相似資料**現次數最多的分類作為新資料的分類。
說明:knn沒有顯示的訓練過程,它是「懶惰學習」的代表,它在訓練階段只是把資料儲存下來,訓練時間開銷為0,等收到測試樣本後進行處理。**
直接附上**:
from sklearn.datasets import load_iris
iris = load_iris()# 查驗資料規模。
# 從sklearn.cross_validation裡選擇匯入train_test_split用於資料分割。
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.25, random_state=33)
# 從使用train_test_split,利用隨機種子random_state取樣25%的資料作為測試集。
from sklearn.preprocessing import standardscaler
# 從sklearn.preprocessing裡選擇匯入資料標準化模組。
from sklearn.neighbors import kneighborsclassifier
# 從sklearn.neighbors裡選擇匯入kneighborsclassifier,即k近鄰分類器。
# 對訓練和測試的特徵資料進行標準化。
ss = standardscaler()
x_train = ss.fit_transform(x_train)
x_test = ss.transform(x_test)
# 使用k近鄰分類器對測試資料進行類別**,**結果儲存在變數y_predict中。
knc = kneighborsclassifier()
knc.fit(x_train, y_train)
y_predict = knc.predict(x_test)
# 使用模型自帶的評估函式進行準確性測評。
print ('the accuracy of k-nearest neighbor classifier is:')
print (knc.score(x_test, y_test))
# 依然使用sklearn.metrics裡面的classification_report模組對**結果做更加詳細的分析。
from sklearn.metrics import classification_report
print (classification_report(y_test, y_predict, target_names=iris.target_names))
結果如圖: KNN演算法進行鳶尾花分類
import numpy as np import matplotlib.pylab as pyb matplotlib inline from sklearn.neighbors import kneighborsclassifier from sklearn import datasets fr...
Python Iris鳶尾花資料Knn分類
首先匯入sklearn庫中自帶iris資料 三類 0 山鳶尾花 1 變色鳶尾花 2 維吉尼亞鳶尾花 訓練集112個,測試集38個。匯入iris資料,x資料,y標籤 iris datasets.load iris x iris.data y iris.target x train,x test,y t...
使用KNN對鳶尾花資料集進行分類處理
author tao contact 1281538933 qq.com file knn.py time 2020 12 21 software vscode from sklearn.datasets import load iris 匯入資料集iris import matplotlib.py...