機器學習 初學KNN演算法(k近鄰演算法)

2021-09-10 02:30:07 字數 891 閱讀 2295

最近想搞點事情,用opencv實現手寫數字、字母識別。核心演算法就是knn,好高大上,其實原理明白了也不難的。

什麼是knn(k-nearestneighbor),它是乙個理論上比較成熟的方法,是一種最簡單的分類演算法,是基於例項的最基本的學習方法,是最好的文字分類演算法之一,是資料探勘分類技術中最簡單的方法之一。(說白了就是一種分類器)

knn演算法機器學習中「懶惰學習」的代表,它在訓練階段只是把資料儲存下來,訓練時間開銷為0,等收到測試樣本後進行處理。怎麼理解,就像我,平時不學習,等到考試了就使勁複習,這樣節省了平時的學習時間(訓練時間),這樣就需要在考試前花大把大把的時間複習(這樣導致程式執行中,knn分類器的執行效率低一點)。

具體原理是什麼?  

存在乙個樣本資料集合(每個資料都帶有標籤),也就是訓練樣本集,即我們通過標籤知道 樣本集中 每個資料 與 所屬分類 對應的關係。然後在我們輸入沒有標籤的資料後(也就是需要進行分類的資料),將新資料中的 每個特徵 與 樣本集中 資料對應的特徵進行比較,提取出樣本集中特徵最相似資料(最近鄰)的分類標籤。

用下面左圖來解釋其原理,綠色為新資料(需要歸類的資料),你覺得影象中綠色歸為紅色三角合適還是藍色矩形好?

knn演算法是這樣分類的,如果k=3(也就是選擇離著最近的三個樣本資料,也就是小圓內),那麼離綠色點最近的有2個紅色的三角形和1個藍色的矩形,這三個點進行投票,於是綠色的待分類點就屬於紅色的三角形。而如果k=5,那麼離綠色點最近的有2個紅色的三角形和3個藍色的正方形,這五個點進行投票,於是綠色的待分類點就屬於藍色的矩形。

k值的選擇會對k近鄰法的結果產生重大影響。在應用中,k值一般取乙個比較小的數值,通常採用交叉驗證法來選取最優的k值,k一般取值不大於20。

機器學習 k 近鄰 kNN 演算法

一 基本原理 存在乙個樣本資料集合 也稱訓練樣本集 並且樣本集中每個資料都存在標籤。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中特徵最相似資料 最近鄰 的分類標籤。我們一般只選擇樣本集中前k k通常是不大於20的整數 個最相似的資料,最後選擇k個...

機器學習 k近鄰演算法 kNN

knn演算法通過計算當前測試樣本與離它最近的k個點的距離,進行投票,得到它最有可能的分類結果。首先來看看機器學習演算法的基本流程 由此可見knn演算法的特點 1.k近鄰演算法是非常特殊的,可以認為是沒有模型的演算法。2.為了和其他演算法統一,可以認為訓練資料集就是模型本身。這也是scikit lea...

機器學習 k 近鄰演算法(KNN)

簡單地說,k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。優點 精度高 對異常值不敏感 無資料輸入假定。缺點 計算複雜度高 空間複雜度高。適用範圍 數值型和標稱型。對於該演算法更通俗的說法,拿到乙個資料a,計算其與資料集c中的資料的距離,通過使用特徵值進行求歐式距離。然後排序取出其前k相鄰的...