KNN 最近鄰演算法初探

2021-10-05 22:29:10 字數 1363 閱讀 1179

本文質量不咋地,目的是記錄一下自己的**。還有乙個原因是我發現別人的部落格寫的太好了!

knn 演算法屬於監督學習的演算法,基本原理是對整個資料整體進行打標籤之後,對乙個新的元素根據其在向量空間中的位置來對其分類。k近鄰演算法是在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,我們就說**點屬於哪個類。

knn本質是基於一種資料統計的方法!其實很多機器學習演算法也是基於資料統計的。knn是一種memory-based learning,也叫instance-based learning,屬於lazy learning。即它沒有明顯的前期訓練過程,而是程式開始執行時,把資料集載入到記憶體後,不需要進行訓練,就可以開始分類了。 具體是每次來乙個未知的樣本點,就在附近找k個最近的點進行投票。參考

k 的取值、距離的度量選擇、特徵歸一化

參考【量化課堂】乙隻兔子幫你理解 knn

嘗試用經典的分類學習演算法 knn 最近鄰(k-nearest neighbor , 最簡單的分類演算法, 新的觀測值的標籤由 n 維空間中最靠近它的訓練樣本標籤確定) 判斷萼片長度和寬度、花瓣長度和寬度分別是 5.0cm, 3.0cm, 5.0cm, 2.0cm 的鳶尾花所屬類別。

import numpy  as np

from sklearn import datasets

iris = datasets.load_iris(

)data = np.array(

[5.0

,3.0

,5.0

,2.0

], dtype=

'float64'

)k =

5# 獲得歐氏距離的陣列

l2_array =

[(iris.target[i]

, np.linalg.norm(data-iris.data[i]))

for i in

range

(len

(iris.data))]

# 取出最近的 k 個目標

topk =

sorted

(l2_array, key=

lambda a: a[1]

)[:k]# 找到個數最多的標籤並輸出

res = np.argmax(np.bincount(

[i[0

]for i in topk ]))

iris.target_names[res]

[1] 量化課堂:乙隻兔子幫你理解 knn

[2] 空間向量中各距離的意義

[3] 機器學習之深入理解k-means、與knn演算法區別及其**實現

[4] 一文搞懂k近鄰(k-nn)演算法(一)介紹

[5] 一文搞懂k近鄰(k-nn)演算法(二)kd樹

最近鄰規則演算法(KNN)

最近鄰演算法 knn 是乙個基於例項學習的分類演算法。如果乙個例項在特徵空間中的k個最相似 即特徵空間中最近鄰 的例項中的大多數屬於某乙個類別,則該例項也屬於這個類別。所選擇的鄰居都是已經正確分類的例項。演算法步驟 1 把所有分類好的 有標籤label 的資料 例項 作為訓練集 2 選擇好引數k 3...

Python最近鄰演算法(KNN)

近朱者赤,近墨者黑。學習筆記 knn 乙個樣本在特徵空間中,總有k個與之最相似 即特徵空間中最鄰近 的樣本。其中,大多數屬於某一類別,則該樣本也屬於這個類別。計算步驟 1.算距離 算出測試樣本到訓練集中每個樣本的距離。例如 歐氏距離 2.找鄰居 找出距離最近的k個訓練物件。k值的選取 交叉驗證 3....

KNN最近鄰演算法python實現

from numpy import import operator def createdataset group array 1.0,1.1 1.0,1.0 0,0 0,0.1 labels a a b b return group,labels def classify0 inx,dataset...