1. 程式人生 > >【轉載】用Scikit-Learn構建K-近鄰算法,分類MNIST數據集

【轉載】用Scikit-Learn構建K-近鄰算法,分類MNIST數據集

blank 應該 距離 含義 https 輸入 簡單 k-近鄰算法 返回

原帖地址:https://www.jiqizhixin.com/articles/2018-04-03-5

K 近鄰算法,簡稱 K-NN。在如今深度學習盛行的時代,這個經典的機器學習算法經常被輕視。本篇教程將帶你使用 Scikit-Learn 構建 K 近鄰算法,並應用於 MNIST 數據集。然後,作者將帶你構建自己的 K-NN 算法,開發出比 Scikit-Learn K-NN 更準更快的算法。

1. K 近鄰分類模型

技術分享圖片

K 近鄰算法是一種容易實現的監督機器學習算法,並且其分類性能的魯棒性還不錯。K-NN 最大的優點之一就是它是一個惰性算法,即該模型無須訓練就可以對數據進行分類,而不像其他需要訓練的 ML 算法,如 SVM、回歸和多層感知機。

2. K-NN 如何工作

為了對給定的數據點 p 進行分類,K-NN 模型首先使用某個距離度量將 p 與其數據庫中其它點進行比較。

距離度量就是類似歐幾裏得距離之類的標準,以兩個點為輸入並返回這兩個點之間距離的簡單函數。

因此,可以假設距離較小的兩個點比距離較大的兩個點相似度更高。這是 K-NN 的核心思想。

該過程將返回一個無序數組,其中數組中的每一項都表示 p 與模型數據庫中 n 個數據點之間的距離。所以返回數組的大小為 n。

K 近鄰的 K 的含義是:k 是一個任意值(通常在 3-11 之間),表示模型在對 p 分類時應該考慮多少個最相似的點。然後模型將記錄這 k 個最相似的值,並使用投票算法來決定 p 屬於哪一類,如下圖所示。

技術分享圖片

【轉載】用Scikit-Learn構建K-近鄰算法,分類MNIST數據集