KNN K鄰近演算法

2021-07-30 06:01:22 字數 1324 閱讀 1010

knn演算法又稱為k最近鄰分類演算法,是一種監督學習類方法,並且knn演算法不需要預先訓練,也就是說knn演算法只有測試過程,沒有訓練過程。所謂的k最近鄰,就是指最接近的k個鄰居(資料),核心思想是:在乙個含未知樣本的空間,可以根據離這個樣本最鄰近的k個樣本的資料型別來確定樣本的資料型別。你可以簡單的理解為由那離自己最近的k個點來投票決定待分類資料歸為哪一類。

該演算法涉及3個主要因素:訓練集、距離的衡量、k的大小。

距離的衡量在之前的k-means的筆記裡有實現歐式距離和person相似係數來衡量樣本之間的距離。

knn演算法過程:

輸入乙個測試樣本,計算已知類別的點(即訓練集)與測試樣本的距離。

在訓練集中選取與測試樣本距離最小的k個點。

確定前k個點所在類別的出現次數。

獲得投票最高的類別輸入的測試樣本的**分類。

knn演算法的python實現:

距離的衡量使用的是歐氏距離

# encoing:utf-8

import numpy as np

import math

import pandas as pd

import operator

defknn

(x_test, dataset,labels,k):

dataset = pd.dataframe(dataset, index=none)

datasetsize = dataset.shape[0]

# sqdiffvec =

sqdiff =

x_test=pd.series(x_test, index=none)

for i in range(datasetsize):

sqdiffveci = dataset[i]-x_test

sqdiffi = math.sqrt(sum(list(sqdiffveci)))

sortedsqdiffindex = np.argsort(sqdiff)

classcount={}

# 選取距離最小的k個點

for i in range(k):

votelabel = labels[sortedsqdiffindex[i]]

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

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

return sortedclasscount.keys()[0]

kNN k鄰近演算法

k近鄰演算法 在特徵空間中,如果乙個樣本附近的k個最近 即特徵空間中最鄰近 樣本的大多數屬於某乙個類別,則該樣本也屬於這個類別。下面在jupyter notebook中一步一步實現k鄰近演算法 knn.py的 如下 coding utf 8 import numpy as np from math ...

K nn(k鄰近學習)

第一步 將每個例子做成乙個點,他所對應發特徵向量是乙個多維的座標 第二步 自己選擇乙個引數k 第三步 計算未知例項與所有已知例項的歐式距離 也可以是其他距離 將他們排序。第四步 選擇根據排序好的k去選擇k個已知例項 第五步 在這k個例項中,根據少數服從多數的原則,讓未知例項歸類到為最多數的類別 程式...

機器學習 KNN K 最鄰近演算法

k 近鄰學習是一種常用的監督學習方法,比如 判斷乙個人的人品,只需要觀察與他來往最密切的幾個人的人品好壞就可以得出,即 近朱者赤,近墨者黑 理論 原理 物以類聚,人以群分 乙個對於knn演算法解釋最清楚的圖如下所示 藍方塊和紅三角均是已有分類資料,當前的任務是將綠色圓塊進行分類判斷,判斷是屬於藍方塊...