K鄰近算法(KNN)是機器學習的基礎算法之一,它的工作原理是:在一個樣本數據集合,也稱作訓練樣本集,並且樣本集中每個數據都存在標籤,即我們知道樣本集中每一個數據與所屬分類的對應關係。輸入沒有標籤的新數據後,將新數據的每個特徵與樣本中數據對應的特徵進行比較,然後算法提取樣本集中特徵最相似數據(最鄰近)的分類標籤。以對某電影所屬類型進行示例:
在電影分類中,以打鬥鏡頭和接吻鏡頭的數目,作為愛情片和動作片兩類電影的判別屬性(樣本特徵)。
樣本集:已經明確類型的電影,例如California Man中打鬥鏡頭數為3,接吻鏡頭數為104,因此認為其是愛情片。Kevin Longblade中打鬥鏡頭為101,接吻鏡頭為5,因此認為其是動作片。
新數據:待判定類型的影片。
利用K鄰近算法實例:
一.社交網站尋找合適約會對象
樣本數據:1000條樣本數據,其中主要特徵為:
每年獲得的飛行常客里程數
玩視頻遊戲所耗時間百分百
每週消費的冰淇淋公升數
通過這三個特徵去找到自己心儀的約會對象,其中約會對象分為三種類型:
不喜歡的人
魅力一般的人
極具魅力的人
不同於上圖,下圖將x軸表示每年獲取的飛行常客里程數,Y軸玩視頻遊戲所耗時間百分的人
二.手寫識別系統
在這裡為了方便起見,只識別0~9。並且需要識別的數字已經使用圖形軟件處理,處理成具有相同的色彩和大小:寬高都是32象數*32像素的黑白圖像。缺點:採用文本格式存儲圖像不能有效地利用內存空間,但是為了方便理解,我們還是將圖像轉為文本格式。
目錄trainingDigits中包含2000個例子,每個例子內容如圖所示,
每個數字大約有兩百個樣本;目錄Digits中包含大約900個測試類數據。使用trainingDigits中數據訓練分類器,使用testDigits的數據測試分類器。
代碼,有需要的麼?
閱讀更多 一兒口山石 的文章