機器學習入門 KNN近鄰演算法

2021-10-07 14:18:44 字數 3312 閱讀 3927

knn近鄰演算法終極思想莫非一句話:

物以類聚,人以群分。

此演算法為機器學習入門的演算法,複雜程度極低,適合入門新手練習。(雖然演算法簡單,可並不代表沒用,麻雀雖小,五臟六腑俱全。)

**在本圖中求綠色圓屬於哪一類?

怎麼求?如何驗證?

機器學習思想,但凡是設計到屬於哪一類這種問題很多人會想到,分類器(classifier)。

但是,分類器是怎麼寫出來的?k-nn演算法就講述了其底層原理。也告訴我們乙個事實,實際問題但凡是能轉換成數學問題的都可以用人工智慧解決。

'''

封裝實現

'''import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

from math import sqrt

from collections import counter

raw_data_x =[[

3.3935

,2.3313],

[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]]

raw_data_y =[0

,0,0

,0,0

,1,1

,1,1

,1]#劃分訓練資料集

x_train = np.array(raw_data_x)

#print(x_train)

y_train = np.array(raw_data_y)

#待**的點,可隨便設定

x = np.array(

[8.2

,4.3])

#設定k值

k =input

('請輸入k值。'

)def

knn(x,x_train,y_train,k)

:'''封裝

黑點即為待**點,我們可以發現其屬於y_train(1)。

#matplotlib資料視覺化展示

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

from math import sqrt

from collections import counter

raw_data_x =[[

3.3935

,2.3313],

[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]]

raw_data_y =[0

,0,0

,0,0

,1,1

,1,1

,1]#劃分訓練資料集

x_train = np.array(raw_data_x)

# print(x_train)

y_train = np.array(raw_data_y)

#待遇測的點

x = np.array(

[8.2

,4.3])

#散點圖

plt.figure(

)plt.scatter(x[0]

,x[1

],color=

'black'

)plt.scatter(x_train[y_train==0,

0],x_train[y_train==0,

1],color=

'red'

)plt.scatter(x_train[y_train==1,

0],x_train[y_train==1,

1],color=

'cyan'

)plt.show(

)#求各點之間的距離

distance =

for x_ in x_train:

dis = sqrt(np.

sum(x_-x)**2

)print

(distance)

#排序取索引

neareset = np.argsort(distance)

print

(neareset)

#設定k值

k =6

top_key =

[y_train[i]

for i in neareset[

:k]]

votes = counter(top_key)

votes.most_common(

)print

(votes)

機器學習入門KNN近鄰演算法 一

1 機器學習處理流程 2 機器學習分類 3 k 近鄰演算法原理 4 knn用於分類 5 knn用於回歸 import numpy as np import matplotlib.pyplot as plt from sklearn.neighbors import kneighborsregress...

機器學習 kNN近鄰演算法

上圖中,綠色圓要被決定賦予哪個類,是紅色三角形還是藍色四方形?如果k 3,由於紅色三角形所佔比例為2 3,綠色圓將被賦予紅色三角形那個類,如果k 5,由於藍色四方形比例為3 5,因此綠色圓被賦予藍色四方形類。k最近鄰 k nearest neighbor,knn 分類演算法,是乙個理論上比較成熟的方...

機器學習演算法 KNN近鄰演算法

在研究機器學習演算法之前,先明確一些基本的概念 1 資料特徵 用於描述一條資料的一些特徵屬性,例如描述乙個人,可以用身高,體重,姓名的屬性來表述,這些資料就是資料的特徵。2 資料類別 根據資料的特徵進行明確的分類。比如說身高1.7,體重60kg的這個人是小明。不滿足上面這些特徵的人不是小明。那麼 是...