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

2021-09-20 21:11:31 字數 1398 閱讀 6267

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

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

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

適用資料範圍:數值型和標稱型

工作原理:

存在乙個樣本資料集合,樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中特徵最相似資料(最近鄰)的 k 個分類標籤,出現次數最多的分類,作為新資料的分類。

knn 演算法流程:

knn 分類器**

def classify0(inx, dataset, labels, k):

datasetsize = dataset.shape[0]

diffmat = tile(inx, (datasetsize,1)) - dataset

sqdiffmat = diffmat**2

sqdistances = sqdiffmat.sum(axis=1)

distances = sqdistances**0.5

#距離計算

sorteddistindicies = distances.argsort()

#距離排序

classcount={}

for i in range(k):

voteilabel = labels[sorteddistindicies[i]]

classcount[voteilabel] = classcount.get(voteilabel,0) + 1

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

sortedclasscount = sorted(classcount.items(), key=operator.itemgetter(1), reverse=true)

#確定前 k 個點所在類別的出現頻率並排序

return sortedclasscount[0][0]

#返回最高的頻率分類

測試:

資料集生成函式為

def createdataset():

group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])

labels = ['a','a','b','b']

return group, labels

測試資料樣本為 [0,0],k 取3。

print(classify0([0,0],group,labels,3))
結果為 b 類別

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

本章介紹機器學習實戰的第乙個演算法 k近鄰演算法 k nearest neighbor 也稱為knn。說到機器學習,一般都認為是很複雜,很高深的內容,但實際上其學習門欄並不算高,具備基本的高等數學知識 包括線性代數,概率論 就可以了,甚至一些演算法高中生就能夠理解了。knn演算法就是乙個原理很好理解...

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

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

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

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