python中K-NN算法是什么?
本文教程操作環(huán)境:windows7系統(tǒng)、Python3.9.1,DELLG3電腦。
KNearestNeighbor算法?叫KNN算法,這個算法是機(jī)器學(xué)習(xí)???個?較經(jīng)典的算法,總體來說KNN算法是相對?
較容易理解的算法。
1、定義
如果?個樣本在特征空間中的k個最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某?個類別,則該樣本也屬于這個類別。(起源:KNN最早是由Cover和Hart提出的一種分類算法);俗話就是:根據(jù)“鄰居”來推斷出你的類別。
2、基本流程
(1)計算已知類數(shù)據(jù)集中的點(diǎn)與當(dāng)前點(diǎn)之間的距離2)按距離遞增次序排序
(2)選取與當(dāng)前點(diǎn)距離最小的k個點(diǎn)
(3)統(tǒng)計前k個點(diǎn)所在的類別出現(xiàn)的頻率
(4)返回前k個點(diǎn)出現(xiàn)頻率最高的類別作為當(dāng)前點(diǎn)的預(yù)測分類
3、實例
代碼涉及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實例化一個估計器
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ù)測值和真實值的對比是:\n",y_pre==y_test)
#5.2準(zhǔn)確率計算
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):千鋒教育。