學習筆記34 k近鄰演算法

2021-08-08 10:29:25 字數 1492 閱讀 7900

(k-nearest-neighbor knn)

這是一種分類演算法,它的核心思想是:對於新的樣本,根據其k個最近鄰的樣本的類別,通過多數表決等決策規則,決定它的類別。

使用k近鄰演算法,首先需要確定三個東西:

距離度量,k值的選擇,分類決策規則

特徵空間中兩個樣本點之間的距離反映了這兩個樣本的相似程度,距離有多種表示方法:

一般用lp表示。

1. 曼哈頓距離(l1距離)

l1距離可以看成是乙個向量範數——1範數,表示向量中所有元素絕對值之和。這裡的向量是兩個樣本特徵向量之差。也就是||x1-x2||1

2. 歐氏距離(l2距離)

l2距離看成是向量的2範數,表示向量中元素的絕對值的平方和的開方。其實就是我們初中數學中計算平面直角座標系中兩個點的距離公式。

3. l無窮距離

當p接近無窮時,lp距離表示向量中各個元素絕對值中最大的那個。表示為:

最後給出適用於所有p的lp計算公式:

最後給出向量範數的計算:

常用的分類決策規則是多數表決,也叫投票,根據票數最多的類別**分類。

1. 構造kd樹

kd樹是一課二叉樹,就是用垂直於座標軸的超平面對k維空間的一種劃分,可以用遞迴的方法產生子結點。

具體步驟如下:

1. 構造根結點,將區域劃分成兩個子區域;

2. 遞迴產生子結點,將子區域再次劃分為兩個子區域;

3. 直到兩個子區域都沒有例項,該點是葉結點,遞迴退出。

2. 搜尋kd樹

搜尋的步驟如下:

1. 從根結點出發,遞迴地向下訪問kd樹(遍歷二叉樹),如果目標點當前維的座標比切分點的座標小,則遍歷左結點,否則遍歷右結點,直到子結點為葉結點為止。

2. 以此葉結點作為當前「最近鄰點」。

3. 遞迴地向上回退,在每個結點執行以下操作:

(1)如果該結點距離目標點更近,則以該結點為「最近鄰點」

(2)檢查該子結點的兄弟結點對應的區域是否有更近的點,如果有則遍歷到兄弟結點,尋找「最近鄰點」

4. 當回退到根結點,搜尋結束,得到目標點的「最近鄰點」。

具體見下圖:

學習筆記 K 近鄰演算法

一 k 近鄰演算法概述 適用於 數值型和標量型 1 收集資料 2 準備資料 向量點距離 3 按照距離遞增次序排序 4 選取與當前距離最小的k個點 5 確定選擇k個點所在類別的頻率 6 判斷當前點的的類別 二 k 近鄰演算法實現 python語言實現 共有資料1000行,含有三個資料特徵 每年獲得的飛...

學習筆記(一)k 近鄰演算法(KNN)

終於找到 機器學習實戰 這本書了,在此記錄一些總結,便於回顧。knn的工作原理是 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中...

機器學習筆記之K近鄰演算法

今天學習的是機器學習中最為簡單的乙個演算法 k近鄰演算法,簡稱knn。由於學習主要參照 機器學習實戰 這本書進行,本系列文章中涉及到的概念與例項絕大部分 於此。本文主要從knn演算法概述,使用k 近鄰演算法改進約會網 的配對效果,手寫識別函式三個方面來展開,本文的主要用意在於闡釋 機器學習實戰 中源...