python中K-NN算法是什么?
本文教程操作環(huán)境:windows7系統(tǒng)、Python3.9.1,DELLG3電腦。
KNearestNeighbor算法?叫KNN算法,這個(gè)算法是機(jī)器學(xué)習(xí)???個(gè)?較經(jīng)典的算法,總體來說KNN算法是相對?
較容易理解的算法。
1、定義
如果?個(gè)樣本在特征空間中的k個(gè)最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某?個(gè)類別,則該樣本也屬于這個(gè)類別。(起源:KNN最早是由Cover和Hart提出的一種分類算法);俗話就是:根據(jù)“鄰居”來推斷出你的類別。
2、基本流程
(1)計(jì)算已知類數(shù)據(jù)集中的點(diǎn)與當(dāng)前點(diǎn)之間的距離2)按距離遞增次序排序
(2)選取與當(dāng)前點(diǎn)距離最小的k個(gè)點(diǎn)
(3)統(tǒng)計(jì)前k個(gè)點(diǎn)所在的類別出現(xiàn)的頻率
(4)返回前k個(gè)點(diǎn)出現(xiàn)頻率最高的類別作為當(dāng)前點(diǎn)的預(yù)測分類
3、實(shí)例
代碼涉及sklean庫,需要安裝sklearn庫。
fromsklearn.datasetsimportload_iris
fromsklearn.model_selectionimporttrain_test_split
fromsklearn.preprocessingimportStandardScaler
fromsklearn.neighborsimportKNeighborsClassifier
#1.獲取數(shù)據(jù)
iris=load_iris()
#2.數(shù)據(jù)基本處理:訓(xùn)練集的特征值x_train測試集的特征值x_test訓(xùn)練集的?標(biāo)值y_train測試集的?標(biāo)值y_test,
'''
x:數(shù)據(jù)集的特征值
y:數(shù)據(jù)集的標(biāo)簽值
test_size:測試集的??,?般為float
random_state:隨機(jī)數(shù)種?,不同的種?會造成不同的隨機(jī)采樣結(jié)果。相同的種?采樣結(jié)果相同
'''
x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0.2,random_state=22)
#3.特征工程-特征預(yù)處理
transfer=StandardScaler()
x_train=transfer.fit_transform(x_train)
x_test=transfer.transform(x_test)
#4.機(jī)器學(xué)習(xí)-KNN
#4.1實(shí)例化一個(gè)估計(jì)器
estimator=KNeighborsClassifier(n_neighbors=5)
#4.2模型訓(xùn)練
estimator.fit(x_train,y_train)
#5.模型評估
#5.1預(yù)測值結(jié)果輸出
y_pre=estimator.predict(x_test)
print("預(yù)測值是:\n",y_pre)
print("預(yù)測值和真實(shí)值的對比是:\n",y_pre==y_test)
#5.2準(zhǔn)確率計(jì)算
score=estimator.score(x_test,y_test)
print("準(zhǔn)確率為:\n",score)
以上就是python中K-NN算法的介紹,希望能對大家有所幫助。更多Python學(xué)習(xí)教程請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。