機器學習分類篇 最鄰近規則分類KNN

2021-08-08 20:23:15 字數 1285 閱讀 7958

最鄰近規則分類演算法(k-nearest neighbor),cover和hart在2023年提出了最初的鄰近演算法,也被稱為基於例項的學習或懶惰學習,與決策樹演算法相比,處理訓練集的時候並不建立任何模型,進行分類時才將測試樣例和所有已知例項進行比較進而分類。

如上圖,主要有兩種色塊,藍色方塊和紅色三角,對綠色未知圓點進行判斷分類,其屬於紅色還是藍色?

knn演算法一般可以分為兩步,為了判斷未知例項的類別,會以所有已知例項作為參照,計算未知例項與所有已知例項的距離。所以第一步先分別計算出圓點和所有色塊的距離。

第二步,選擇乙個引數k,判斷離未知例項最近的k個例項是什麼型別,以少數服從多數的原則進行歸類。

上圖中,假如我們選擇k的值是1,則離未知例項最近的乙個色塊是藍色,未知例項被歸類為藍色。假如我們選擇k的值為4,則很明顯,離未知例項最近的4個色塊3個是紅色,1個是藍色,未知例項被歸類為紅色。

所以k的選擇對結果的影響很大,一般為了得出結果k選擇奇數,通過增大k也可以增強對噪音資料的健壯性。

對於距離的衡量方式有很多種,最常用的是euclidean distance:

二維的下距離計算公式如上圖簡單的數學公式,擴充套件到n維下x,y兩點的距離公式:

knn演算法優點是簡單易於理解和實現,缺點是需要大量的空間儲存所有例項,因為未知例項要和所有例項進行計算演算法複雜度高,而且當一類樣本過大,則不管未知例項屬於哪一類都很容易歸為數量過大的這一類。

如圖:

y點肉眼去看因為在紅色區域內很容易判斷出多半屬於紅色一類,但因為藍色過多,若k值選取稍大則很容易將其歸為藍色一類。為了改進這一點,可以為每個點的距離增加乙個權重,這樣裡的近的點可以得到更大的權重,比如距離d,權重1/d。

根據電影的打鬥次數和接吻次數,將電影分類為romance和action,已經有6個已知樣例,怎麼樣根據未知樣例的打鬥次數和接吻次數判斷其電影型別?

將打鬥次數和接吻次數作為二維座標,判斷每個已知樣例電影與未知電影的距離,可以得出最近的3個電影都是romance電影,則未知電影判斷為romance電影,這就是knn演算法。

機器學習之最鄰近規則分類KNN

k最近鄰 k nearest neighbor,knn 演算法,是著名的模式識別統計學方法,在機器學習分類演算法中占有相當大的地位。它是乙個理論上比較成熟的方法。既是最簡單的機器學習演算法之一,也是基於例項的學習方法中最基本的,又是最好的文字分類演算法之一。如果乙個例項在特徵空間中的k個最相似 即特...

機器學習之K 最鄰近演算法(2)

前面一篇文章說了用knn演算法進行分類,現在嘗試用knn演算法進行線性回歸分析。不說了,直接上 使用knn實現簡單的線性回歸.sk中進行回歸和分類的knn演算法的api不一樣,這點需要注意一下。import numpy as np from sklearn.neighbors import knei...

001 KNN分類 最鄰近演算法

2 coding utf 8 import math import csv import random import operator author hunter time 2017.03.31 class knearestneighbor object def init self pass def...