機器學習 KNN演算法

2021-09-10 21:55:46 字數 2317 閱讀 6991

knn演算法應該是機器學習中最簡單的演算法,其演算法核心步驟如下:

對未知類別屬性的資料集中的每個樣本執行:

1.計算已知類別資料集中的點與當前點之間的距離

2.按照距離遞增次序排序

3.選取當前點距離最小的k個點

4.確定前k個點所在類別的出現頻率

5.返回前k個點出現頻率最高的類別作為當前點的**分類

紀錄一下核心**

#knn演算法實現

defclassify0

(inx, dataset, labels, k)

:#s測試向量 訓練向量,標籤, k值

datasetsize = dataset.shape[0]

diffmat = np.tile(inx,

(datasetsize,1)

)- dataset #tile()用於擴充套件矩陣 將測試向量y方向複製到與訓練資料一致

sqdiffmat = diffmat**

2 sqdistances = sqdiffmat.

sum(axis=1)

distances = sqdistances**

0.5#求得距離

sorteddistindicies = distances.argsort(

)#返回排序的下標,從小到大

classcount=

for i in

range

(k):

voteilabel = labels[sorteddistindicies[i]

]#找到測試最近的前3個資料

classcount[voteilabel]

= classcount.get(voteilabel,0)

+1#用字典計數

sortedclasscount =

sorted

(classcount.iteritems(

), key=operator.itemgetter(1)

, reverse=

true

)#對字典排序,基於值,從大到小(逆序,reverse=true)

return sortedclasscount[0]

[0]#匯入資料集

deffile2matrix

(filename)

: fr =

open

(filename)

numberoflines =

len(fr.readlines())

#get the number of lines in the file

returnmat = np.zeros(

(numberoflines,3)

)#prepare matrix to return

classlabelvector =

#prepare labels return

fr =

open

(filename)

index =

0for line in fr.readlines():

line = line.strip(

) listfromline = line.split(

'\t'

) returnmat[index,:]

= listfromline[0:

3]int(listfromline[-1

])) index +=

1return returnmat,classlabelvector

#數值歸一化

#newvalue=(oldvalue-min)/(max-min)

defautonorm

(dataset)

: minvals = dataset.

min(0)

#返回該矩陣中每一列的最小值

maxvals = dataset.

max(0)

ranges = maxvals - minvals

normdataset = np.zeros(np.shape(dataset)

) m = dataset.shape[0]

normdataset = dataset - np.tile(minvals,

(m,1))

normdataset = normdataset/np.tile(ranges,

(m,1))

#element wise divide

return normdataset, ranges, minvals

機器學習 演算法 KNN

參考 我感覺knn是最簡單的乙個機器學習演算法,實現很簡單,效果也一般般 就是算個euclideam distance,還有一些可以優化的地方,比如可以加權,第二篇文章提到了 python 如下 coding utf 8 created on aug 30,2013 author blacklaw ...

機器學習 KNN 演算法

一 主要目的 在樣本空間中,找到與待估計的樣本最臨近的k個鄰居,用這幾個鄰居的類別來估計待測樣本的類別 二 適用性 樣本容量比較大的類域的自動分類,而樣本容量較小的類域則容易誤分。尤其適用於樣本分類邊界不規則的情況 三 不足 1 當樣本不平衡時,比如乙個類的樣本容量很大,其他類的樣本容量很小,輸入乙...

機器學習 KNN演算法

一 近 鄰 算 法 knn 原理 工 作 原 理 是 存 在 一 個 樣 本 資料 集 合 也 稱 作 訓練 樣 本 集 並 且 樣 本 集 中 每 個 數 據 都 存 在 標 籤 即 我 們 知 道 樣 本 集 中 每 一 數 據與 所 屬 分 類 的 對 應關係 輸 人 沒 有 標 籤 的 新 ...