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演算法解釋最清楚的圖如下所示 藍方塊和紅三角均是已有分類資料,當前的任務是將綠色圓塊進行分類判斷,判斷是屬於藍方塊...