溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何使用KNN近鄰算法

發(fā)布時(shí)間:2021-12-01 17:20:55 來(lái)源:億速云 閱讀:147 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了如何使用KNN近鄰算法,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

1.什么是knn算法

百度百科介紹的已經(jīng)很詳細(xì),在此只作簡(jiǎn)單介紹。

存在一個(gè)樣本數(shù)據(jù)集合,也稱(chēng)作訓(xùn)練樣本集,并且樣本集中每個(gè)數(shù)據(jù)都存在標(biāo)簽,即我們知道樣本集中每一數(shù)據(jù) 與所屬分類(lèi)的對(duì)應(yīng)關(guān)系。輸人沒(méi)有標(biāo)簽的新數(shù)據(jù)后,將新數(shù)據(jù)的每個(gè)特征與樣本集中數(shù)據(jù)對(duì)應(yīng)的 特征進(jìn)行比較,然后算法提取樣本集中特征最相似數(shù)據(jù)(最近鄰)的分類(lèi)標(biāo)簽。一般來(lái)說(shuō),我們 只選擇樣本數(shù)據(jù)集中前K個(gè)最相似的數(shù)據(jù),這就是K-近鄰算法中K的出處,通常K是不大于20的整數(shù)。 最后 ,選擇K個(gè)最相似數(shù)據(jù)中出現(xiàn)次數(shù)最多的分類(lèi),作為新數(shù)據(jù)的分類(lèi)

2.knn算法的優(yōu)缺點(diǎn):

  • 優(yōu)點(diǎn):精度高、對(duì)異常值不敏感、無(wú)數(shù)據(jù)輸入假定。

  • 缺點(diǎn):時(shí)間復(fù)雜度高、空間復(fù)雜度高。

  • 適用數(shù)據(jù)范圍:數(shù)值型和標(biāo)稱(chēng)型。

3.利用knn解決分類(lèi)問(wèn)題

1,導(dǎo)包

from sklearn.neighbors import KNeighborsClassifier
import numpy as np
import sklearn.datasets as datasets#該數(shù)據(jù)集中,有好多的數(shù)據(jù)  是關(guān)于數(shù)據(jù)分析的一些數(shù)據(jù)
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
%matplotlib inline

2.導(dǎo)入sklearn自帶的鳶尾花數(shù)據(jù)集

iris_data =datasets.load_iris()

3.獲取數(shù)據(jù)集的特征和標(biāo)簽

data =iris_data.data
label=iris_data.target

4.查看特征名稱(chēng)

iris_data.feature_names

由此發(fā)現(xiàn)該數(shù)據(jù)集有,['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']四個(gè)特征,一一對(duì)應(yīng)其data中的每一列數(shù)據(jù)

5.拆分訓(xùn)練集和測(cè)試集

#data 一分為二,訓(xùn)練數(shù)據(jù)X_train,x_test;
#target  一分為二  y_train,y_test
#y_train  目標(biāo)值,y_test (保留的真實(shí)值)
X_train,x_test,y_train,y_test = train_test_split(data,target,test_size=0.1)

6.實(shí)例化算法并開(kāi)始訓(xùn)練數(shù)據(jù)

#聲明算法
knn = KNeighborsClassifier()
#訓(xùn)練數(shù)據(jù)
knn.fit(X_train,y_train)

7.查看準(zhǔn)確率

knn.score(x_test,y_test)

8.進(jìn)行測(cè)試,并將預(yù)測(cè)結(jié)果與真實(shí)結(jié)果對(duì)比

#進(jìn)行測(cè)試,只將數(shù)據(jù)交給model進(jìn)行預(yù)測(cè)
y_ = knn.predict(x_test)
y_

y_是預(yù)測(cè)結(jié)果,y_test是真實(shí)標(biāo)簽,對(duì)比即可

9.展示數(shù)據(jù)

#獲取訓(xùn)練樣本
#對(duì)原始數(shù)據(jù)進(jìn)行處理,獲取花萼的長(zhǎng)度和寬度
#繪制展示這些花
X_train =  data[:,:2]
y_train = ta

使用三點(diǎn)圖展示數(shù)據(jù)

plt.scatter(X_train[:,0],X_train[0:,1],c=y_train,cmap="rainbow")
如何使用KNN近鄰算法

上述內(nèi)容就是如何使用KNN近鄰算法,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

knn
AI