機器學習筆記6 KNN介紹與案例

2021-10-03 05:39:36 字數 2940 閱讀 2522

3.例子

k-近鄰演算法(k-nearest neighbour algorithm),又稱為knn演算法,是機器學習中原理最簡單的演算法。

給定乙個已知標籤類別的訓練資料集,輸入沒有標籤的新資料後,在訓練資料集中找到與新資料最鄰近的k個例項,如果這k個例項的多數屬於某個類別,那麼新資料就屬於這個類別。可以簡單理解為:由那些離x最近的k個點來投票決定x歸為哪一類

尤拉距離:

( x(

a)−x

(b))

2+(y

(a)−

y(b)

)2\sqrt-x^)^2+(y^-y^)^2}

(x(a)−

x(b)

)2+(

y(a)

−y(b

))2​

當資料集的特徵比較多,為n時:

( x(

a)−x

(b))

2+(y

(a)−

y(b)

)2+(

z(a)

−z(b

))2+

⋯+(n

(a)−

n(b)

)2\sqrt-x^)^2 + (y^-y^)^2 + (z^-z^)^2 + \cdots + (n^-n^)^2}

(x(a)−

x(b)

)2+(

y(a)

−y(b

))2+

(z(a

)−z(

b))2

+⋯+(

n(a)

−n(b

))2​

# 腫瘤**案例

import numpy as np

import matplotlib.pyplot as plt

# row data 是python中普通的list

row_data_x =[[

3.3935

,2.3312],

[3.1101

,1.7815],

[1.3438

,3.3684],

[3.5823

,4.6792],

[2.2804

,2.8670],

[7.4234

,4.6965],

[5.7451

,3.5340],

[9.1722

,2.5111],

[7.7928

,3.4241],

[7.9398

,0.7916]]

# 0:良性腫瘤,1:惡性腫瘤

row_data_y =[0

,0,0

,0,0

,1,1

,1,1,1]

# 將資料變為np資料

x_train = np.array(row_data_x)

y_train = np.array(row_data_y)

x = np.array(

[8.0936

,3.3657])

# 給定待測點

# plot,將不同label的點區分開

plt.scatter(x_train[y_train==0,

0],x_train[y_train==0,

1],color=

'r')

# 注意這種取值方式

# 計算待測點與所有點的距離,並放到1個列表

from math import sqrt

distances =

[sqrt(np.

sum(

(x_train - x)**2

))for x_train in x_train ]

# 找出距離最近的k個點,並知道它的label

k =6

arg_nearests = np.argsort(distances)

top_k =

[y_train[arg_nearest]

for arg_nearest in arg_nearests[

:k]]

print

("the nearest is: \n"

, top_k)

the nearest is: 

[1, 1, 1, 1, 1, 0]

# 計算各個元素的數量

from collections import counter

counter(top_k)

counter()
votes = counter(top_k)

votes.most_common(1)

# 求最多的值,1表示最多的1個

[(1, 5)]
votes.most_common(1)

[0][

0]# 選這個列表的第0個,元組的第0個

1
最後判斷改待測點最大可能是

機器學習手記 6 KNN演算法

knn演算法,是監督學習,已知一組訓練資料,知道多個特徵對應值和所屬類別,然後新增測試資料,計算測試樣本在多特徵空間上到各類別訓練資料的歐式距離,距離那個類別訓練資料集的距離小,就屬於那個類別。需要指出這個對於訓練資料集的選擇很重要,如果某類樣本很多,另一類樣本較少,這會對分類結果有影響。另外knn...

機器學習實戰《學習筆記》 KNN

新增編碼方式 coding utf 8 from numpy import import operator 準備資料 defcreatedataset group array 1.0,1.1 1.0,1.0 0,0 0,0.1 labels a a b b return group,labels 使...

學習筆記 機器學習實戰 KNN

knn演算法注釋版,新手小白,有錯誤歡迎指正 環境 python 3.6 knn分類器 def classify inx,dataset,labels,k inx為行向量 datasize dataset.shape 0 求訓練集的行數 diffmat tile inx datasize,1 dat...