k 近鄰演算法 機器學習讀書筆記

2021-08-15 14:01:12 字數 1220 閱讀 7419

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

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

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

步驟:

1. 獲取原始資料集(資料向量和標籤)

2. 輸入待分類資料向量,計算該向量與每個原始資料集向量的距離

3. 對所有距離排序(從近到遠),取前k個最近的原始資料集,檢視其標籤

4. 前k個最近資料的標籤中,出現次數最多的標籤為待分類向量的**標籤。

計算兩個向量點xa和xb

之間的距離 : 

python3 示例:

import numpy as np

def createdataset():

group = np.array([[1.0, 1.1]

,[1.0, 1.0]

,[0, 0]

,[0, 0.1]])

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

return group, labels

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

datasetsize = dataset.shape[0]

diffmat = np.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):

votelabel = labels[sorteddistances[i]]

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

sortedclasscount = sorted(classcount.items(), key=lambda x: x[1], reverse=true)

return sortedclasscount[0][0]

group, labels = createdataset()

classify0([1.2, 1.1], group, labels, 3)

機器學習實戰讀書筆記(一) K近鄰演算法

from numpy import import operator def createdataset 建立資料集 group array 1.0,1.1 1.0,1.1 0,0 0,0.1 labels a a b b return group,labels def classify0 inx,d...

機器學習實戰讀書筆記 二 k 近鄰演算法

knn演算法 1.優點 精度高 對異常值不敏感 無資料輸入假定 2.缺點 計算複雜度高 空間複雜度高。3.適用資料範圍 數值型和標稱型。一般流程 1.收集資料 2.準備資料 3.分析資料 4.訓練演算法 不適用 5.測試演算法 計算正確率 6.使用演算法 需要輸入樣本和結構化的輸出結果,然後執行k ...

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

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