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的這個人是小明。不滿足上面這些特徵的人不是小明。那麼 是...