優點:精度高、對異常值不敏感、無資料輸入假定。
缺點:計算複雜度高、空間複雜度高。
適用資料範圍:數值型和標稱型。
步驟:
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 近鄰演算法改進約會網 的配對效果,手寫識別函式三個方面來展開,本文的主要用意在於闡釋 機器學習實戰 中源...