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

2021-06-20 22:45:11 字數 1334 閱讀 7797

k-近鄰演算法工作原理

存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的資料進行比較,然後演算法提取樣本集中特徵最相似資料(最鄰近)的分類標籤。一般來說,我們只選取樣本資料集中前k個最相似的資料,這就是k-近鄰演算法中k的出處,通常k是不大於20的整數。最後,選擇k個最相似資料中出現次數最多的分類,作為新資料的分類。

k-鄰近演算法**

#    inx: 用於分類的輸入向量

# dataset: 訓練樣本集

# lables: 標籤向量

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

#argsort函式的作用是返回乙個索引列表,該列表使得

#distance[sorteddistindices[0]]每年獲得的飛行常客歷程數

每週消費的冰淇淋公升數

# 將待處理資料的格式變為分類器可以接受的格式

def file2matrix(filename):

fr = open(filename)

arrayolines = fr.readlines()

#獲得檔案的行數

numberoflines = len(arrayolines)

#建立乙個以零填充的矩陣,行數為檔案的行數,列數為3

returnmat = zeros((numberoflines, 3))

classlabelvector =

index = 0

for line in arrayolines:

line = line.strip()

listfromline = line.split('\t')

#將待處理資料每行前三個數存在矩陣中的一行中

returnmat[index,:] = listfromline[0:3]

#將待處理資料每行最後乙個數存在類別向量中

index += 1

return returnmat, classlabelvector

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

k 近鄰演算法 knn 採用測量不同特徵值之間的距離方法進行分類。優點 精度高 對異常值不敏感 無資料輸入假定。缺點 計算複雜度高 空間複雜度高。適用資料範圍 數值型和標稱型。描述 存在乙個樣本資料集合,樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸人沒有標籤的新資料...

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

k近鄰演算法 或者說k最近鄰 knn,k nearestneighbor 在乙個空間中有許多樣本,這時候來了乙個新的樣本即測試點,那麼如何判斷這個樣本的類別。做法就是求測試點和空間中每個樣本的距離,用距離最近的前k個判斷。比如下圖新來了乙個點,這時候k 3,離它最近的3個點就是乙個為正方形,兩個為三...

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

k 近鄰演算法實現 from numpy import import operator from os import listdir 資料集 defcreatedataset group array 1.0,1.1 1.0,1.0 0,0 0,0.1 labels a a b b return gr...