k - 鄰近演算法
1. 演算法描述
k-鄰近演算法(k nearest neighbor, knn)分類演算法,是最簡單的機器學習演算法。
工作原理:存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類對應的關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中特徵最相似資料(最鄰近)的分類標籤。一般來說,我們只選擇樣本資料集中前k個最相似資料,這就是k-鄰近演算法中k的出處,通常k是不大於20的整數。最後,選擇k個最相似資料中出現次數最多的分類。
簡單的說,k-鄰近演算法採用測量不同特徵值之間的距離方法進行分類。
2. k - 鄰近演算法的一般流程
(1)收集資料:可以使用任何方法。比如:通用資料庫,網路爬蟲等。
(2)準備資料:距離計算所需要的數值,最好是結構化的資料格式。
距離計算一般選擇歐氏距離:
d = [(xa0 - xb0)2 + (xa1 - xb1)2]1/2
注:計算特徵之間的距離時,要將每個特徵都歸一化,以消除資料差異對結果的影響。公式如下:
newvalue = (oldvalue - min) / (max - min)
其中min和max分別是資料集中的最小特徵值和最大特徵值。
(3)分析資料:可以使用任意方法。比如:使用matplotlib製作原始資料的散點圖,以發現特徵之間的關係。
(4)訓練演算法:此步驟不適用於k-鄰近演算法。
(5)測試演算法:計算錯誤率。
對於分類器來說,錯誤率就是分類器給出錯誤結果的次數除以測試資料的總數。
(6)使用演算法:首先需要輸入樣本資料和結構化的輸出結果,然後執行k-鄰近演算法判定輸入資料分別屬於哪個分類,最後應用對計算出的分類執行後續的處理。
3. python平台
(1)使用matplotlib建立散點圖
import matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(datingdatamat[:,1], datingdatamat[:,2])
k鄰近演算法
今天學習了一點機器學習的知識,主要是機器學習最基本的演算法 k鄰近演算法。正好今天寫這篇blog可以複習鞏固,其中涉及到的code和一些內容來自 機器學習實戰 在此基礎上加了一點自己的注釋和理解。這本教程還是挺適合入門的,理論 相結合。k 近鄰演算法 knn 採用測量不同特徵值之間的距離方法進行分類...
K鄰近演算法
k近鄰法 k nearest neighbor,k nn 是1967年由cover t和hart p提出的一種基本分類與回歸方法。它的工作原理是 存在乙個樣本資料集合,也稱作為訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新的...
K鄰近演算法 KNN
k nearest neighbor knn演算法 如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。所選擇的鄰居都是已經正確分類的物件。如果k 3,則綠色圓形的類別與紅色三角形相同 如果k 5,則綠色圓形的類別與藍色正方形相同 the...