knn分類演算法實現鳶尾花**
對鳶尾花利用knn演算法進行分類,利用python的sklean庫極大方便了python的使用,減少了大量**的書寫。knn演算法的**是通過計算歐氏距離來確定**鳶尾花的結果,遍歷所有樣本集,計算待分類樣本與每個樣本的距離,計算並儲存後排序,尋找k個近鄰,最後輸出最小結果即為分類的組。因為對於python語法不盡熟練的原因,在進行編碼過程出現了莫名的bug,並且裡邊有許多不應出現的結構複雜的**。
import numpy as np
import pandas as pd
#匯入sklearn庫
from sklearn.model_selection import train_test_split
class
knn:
# 設定近鄰數
def__init__
(self, k)
: self.n_neighbors = k
# 訓練
deffit
(self, x_train, y_train)
:# 一行代表乙個樣本,y是n行的一維陣列,對應x的標籤
self.xtr = x_train
self.ytr = y_train
# **
defpredict
(self, x_test)
: num_test = x_test.shape[0]
# 確認輸出的結果型別符合輸入的型別
ypred = np.zeros(num_test, dtype=self.ytr.dtype)
# 迴圈每一行,也就是每乙個樣本
for i in
range
(num_test)
:# 計算歐式距離
distances = np.sqrt(np.
sum(np.square(self.xtr - x_test[i,:]
), axis=1)
) min_index= np.argmin(distances)
# 拿到最小距離的索引
ypred[i]
= self.ytr[min_index]
# **樣本的標籤,其實就是跟他最近的訓練資料樣本的標籤
return ypred
if __name__ ==
'__main__'
:# 獲取鳶尾花資料
iris_dataset = pd.read_csv(
"iris.data.csv"
)# 載入特徵和標籤集
x = iris_dataset[
['e_length'
,'e_width'
,'b_length'
,'b_width']]
#花萼長,寬,花瓣長,寬
y = iris_dataset[
'species'
]#0表示setosa;1表示versicolor;2是virginica
# 劃分資料集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=
0.3, random_state=0)
# 建立knn例項,k為1
knn = knn(1)
# 訓練資料
knn.fit(x_train, y_train)
score=
el=ew=
bl=bw=
# **
for i in
range(1
,5):
e_length =
float
(input
("請輸入進行**的花萼長:"))
e_width =
float
(input
("請輸入進行**的花萼寬:"))
b_length =
float
(input
("請輸入進行**的花瓣長:"))
b_width =
float
(input
("請輸入進行**的花瓣寬:"))
x_new = np.array(
[[e_length, e_width, b_length, b_width]])
("x_new.shape:{}"
.format
(x_new.shape)
) prediction = knn.predict(x_new)
("prediction:{}"
.format
(prediction)
)if prediction ==0:
("prediction target name:setosa"
)'set'
)elif prediction ==1:
("prediction target name:versicolour"
)'ver'
)elif prediction ==2:
("prediction target name:virginica"
)'vir'
)#列印**結果表
("花萼長:"
,end=
'\t'
(el,end=
'\t'
('\n'
("花萼寬"
,end=
'\t'
(ew, end=
'\t'
('\n'
("花瓣長"
,end=
'\t'
(bl, end=
'\t'
('\n'
("花瓣寬"
,end=
'\t'
(bw, end=
'\t'
('\n'
("結果"
,end=
'\t'
(score, end=
'\t'
('\n'
("\nps:**結果0表示setosa;1表示versicolor;2是virginica\n"
)
knn 鳶尾花例子
1.獲取資料集 2.資料基本處理 3.特徵工程 4.機器學習 模型訓練 5.模型評估 from sklearn.datasets import load iris from sklearn.model selection import train test split from sklearn.pr...
鳶尾花KNN演算法的重構
一 作業題目 鳶尾花的knn演算法重構 knn演算法又稱為k近鄰演算法,k的含義是指考慮訓練集中與新資料點最近的任意k個鄰居 比如說,距離新資料點最近的3個或5個鄰居 而不是只考慮距離新資料點最近的那乙個。然後,我們可以利用這些鄰居中數量最多的類分別作出 二 演算法設計 1 knn演算法的原理 如果...
KNN演算法進行鳶尾花分類
import numpy as np import matplotlib.pylab as pyb matplotlib inline from sklearn.neighbors import kneighborsclassifier from sklearn import datasets fr...