(機器學習實戰)K 近鄰演算法學習過程

2021-10-05 04:39:39 字數 1830 閱讀 6777

k-近鄰演算法,簡單地說,k-近鄰演算法採用測量不同特徵值之間的距離方法進行分類

k近鄰演算法特徵

詳細優點

精度高、對異常值不敏感、無資料輸入假定

缺點計算複雜度高、空間複雜度高

適用資料範圍

數值型和標稱型

k-近鄰演算法的一般流程:

收集資料:可以使用任何方法

準備資料:距離計算所需要的數值,最好是結構化的資料格式

分析資料:可以使用任何方法

訓練資料:此步驟不適合k-近鄰演算法

測試演算法:計算錯誤率

使用演算法:首先需要輸入樣本資料和結構化的輸出結果,然後執行k-近鄰演算法判定輸入資料分別屬於哪個分類,最後應用對計算出的分類執行後續的處理。

實施knn分類演算法偽**如下:

對未知類別屬性的資料集中的每個點依次執行以下操作:

計算已知類別資料集中的點與當前點之間的距離

按照距離遞增次序排序

選取與當前點距離最小的k個點

確定前k個點所在類別的出現頻率

返回前k個點出現頻率最高的類別作為當前點的**分類

以下**在python3.6中測試,安裝了anocoda

from numpy import

*import operator

defclassify0

(inx, dataset, labels, k)

:"""

k-近鄰演算法實現

:param inx:特徵值

:param dataset:資料集

:param labels:標註的分類結果

:param k:求前k個

:return:前k個距離最近的選項中,返回出現頻率最大的項

"""# 返回資料集中行的大小

datasetsize = dataset.shape[0]

#將輸入引數inx擴充套件到與資料集行的大小一致的矩陣,然後每項做差

diffmat = tile(inx,

(datasetsize,1)

)- dataset

#求差值後的矩陣每項乘方

sqdiffmat = diffmat**

2#以行為單位,求和

sqdistances = sqdiffmat.

sum(axis=1)

#開方,計算距離

distances = sqdistances**

0.5#按從小到大次序排序,儲存對應的下標值

sorteddistances = distances.argsort(

) classcount =

for i in

range

(k):

voteilabel = labels[sorteddistances[i]

]#取得在前k個距離下的對應取值

classcount[voteilabel]

= classcount.get(voteilabel,0)

+1#計算當前取值voteilabel的個數,get()如果獲取不到,預設為0

# 在python2.x版本中使用iteritems,operator.itemgetter(1)是以第二個項進行排序,這裡是逆序

sortedclasscount =

sorted

(classcount.items(),

key = operator.itemgetter(1)

,reverse =

true

)#最後返回第一項的第乙個屬性值 sortedclasscount

return sortedclasscount[0]

[0]

《機器學習實戰》 K 近鄰演算法

基本原理 通過計算新資料與給定的樣本資料之間的距離,來確定相似度排名 然後取前k個最相似的樣本,統計這k 一般不大於20 個樣本中出現最多的分類,設為新資料的分類。新資料,訓練樣本集,樣本資料標籤 即分類 最近鄰 前k個最相似資料 最近鄰標籤 演算法實施 首先提取要比較的特徵,確定各特徵的權重,進行...

機器學習實戰 K 近鄰演算法

簡單的說,k 近鄰演算法採用測量不同特徵值之間的距離辦法進行分類.收集資料 可以使用任何方法。準備資料 距離計算所需要的數值,最好是結構化的資料格式。分析資料 可以使用任何方法。訓練演算法 此步驟不適用於k 近鄰演算法。測試演算法 計算錯誤率。使用演算法 首先需要輸入樣本資料和結構化的輸出結果,然後...

機器學習實戰 k 近鄰演算法

本系列是基於 機器學習實戰 這本書做的讀書筆記,原書採用python2作為工具,我則將原書 改為用python3編寫並記錄在此系列中。我將把書中對這些機器學習演算法的定義謄上,然後寫下自己對該演算法的通俗理解,之後貼出書中演算法清單中的 本書講解的第乙個機器學習演算法是k 近鄰演算法 knn 它的工...