iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
AI/ ML & Data

ML/DL-新手選手村系列 第 12

day12_ML常見分類演算法:K-最近鄰演算法(KNN)

  • 分享至 

  • xImage
  •  
  • 今天我們要談KNN演算法如下內容:

  • KNN演算法起源

  • KNN演算法原理

  • KNN演算法程式碼

  • KNN演算法起源與原理:

世界上所有的事物並非都是二元分類ex.是男是女,或是線性關係ex.吃得越多,體重就會越重,
有時候,量化吃的東西與體重的關係,並非成一直線關係,有可能過了某個臨界點,是呈現拋物線曲線上升。這時候,就有KNN演算法的誕生。KNN分類法的概念很簡單,就是先自定一個k值,再取一個歐式距離d,將所有物件繪於圖上,在物件a的d距離內從k個鄰近點找出最多類別多數決majority voting b,而KNN迴歸則是取k個鄰近點的平均值。由下圖我們可以知物件a就是三角形。

https://ithelp.ithome.com.tw/upload/images/20240902/20168324TlHlLOVj3Z.png

  • KNN的程式碼:

from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier(n_neighbors=5, metric='minkowski', p=2)
knn.fit(X_train, y_train)
knn.predict(X_train)
knn.score(X_train, y_train)
  • 載入sklearn.neighors 套件KNeighborsClassifier。

  • n_neighors 就是我們剛才所說的k個最近鄰,這裡取5個最近鄰。

  • metric 為度量標準,「minkowski」即是p=1,曼哈頓距離,p=2,歐式距離。這裡取p=2。

  • 一般式:d(x^{i}, x^{i}) = \sqrt[p]{\sum_k(|x_k^{i}-x_k^{j}|)^p},帶入p=1(曼哈頓距離)
    或p=2(歐式距離)。

  • 歐式距離(畢氏定理):圖上兩點距離a(x1, y1),b(x2, y2) =\sqrt{(x2-x1)^2+(y2-y1)^2}。



上一篇
day11_常見的ML演算法:羅吉斯迴歸(logistic regression)
下一篇
day13_常見ML分類演算法:單純貝氏(天真貝氏) Navie Bayes(1/2)
系列文
ML/DL-新手選手村30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言