#一:什麼是看knn演算法?!/usr/bin/python
#-*- coding: utf-8 -*-
from numpy import *
import
operator
defcreatedataset():
'建立資料集
'group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,1.1]])
labels=["
a","
a","
b","b"
]
return
group,labels
defclassify(inx,dataset,labels,k):
#獲取維度
datasetsize=dataset.shape[0] #
訓練資料集數量
datasetsize
print tile(inx,(datasetsize,1))
diffmat=tile(inx,(datasetsize,1))-dataset #
測試樣本的各維度的差值
diffmat
sqdiffmat=diffmat**2 #
平方計算
sqdiffmat
sqdistance=sqdiffmat.sum(axis=1) #
輸出每行的值
sqdistance
distances=sqdistance**0.5 #
開方計算
distances
sorteddistances=distances.argsort() #
排序 按距離從小到大 輸出索引
sorteddistances
classcount={}
for i in
range(k):
voteilabel=labels[sorteddistances[i]]
classcount[voteilabel]=classcount.get(voteilabel,0)+1.0sortedclasscount=sorted(classcount.iteritems(),key=operator.itemgetter(1),reverse=true)
return
sortedclasscount[0][0]
group,labels=createdataset()
res=classify([1,1],group,labels,3)
print res
knn演算法全稱是k-最近鄰演算法(k-nearest neighbor)
knn演算法的核心思想是如果乙個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的乙個或者幾個樣本的類別來決定待分樣本所屬的類別。
下邊舉例說明:
即使不知道未知電影屬於哪種型別,我們也可以通過某種方法計算出來,如下圖
現在我們得到了樣本集中與未知電影的距離,按照距離的遞增順序,可以找到k個距離最近的電影,假定k=3,則三個最靠近的電影是和he is not realy into dudes,beautiful women, california man knn演算法按照距離最近的三部電影型別決定未知電影型別,這三部都是愛情片,所以未知電影的型別也為愛情片
二:knn演算法的一般流程
step.1---初始化距離為最大值
step.2---計算未知樣本和每個訓練樣本的距離dist
step.3---得到目前k個最臨近樣本中的最大距離maxdist
step.4---如果dist小於maxdist,則將該訓練樣本作為k-最近鄰樣本
step.5---重複步驟2、3、4,直到未知樣本和所有訓練樣本的距離都算完
step.6---統計k-最近鄰樣本中每個類標號出現的次數
step.7---選擇出現頻率最大的類標號作為未知樣本的類標號
三:距離公式
在knn中,通過計算物件間距離來作為各個物件之間的非相似性指標,避免了物件之間的匹配問題,在這裡距離一般使用歐氏距離或曼哈頓距離:
機器學習演算法 K鄰近演算法
coding utf 8 author whf from numpy import import operator def classify inx,dataset,labels,k 得到資料集的行數 shape方法用來得到矩陣或陣列的維數 datasetsize dataset.shape 0 t...
機器學習 K 鄰近演算法 KNN
k 鄰近演算法 有監督演算法 演算法工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每乙個特徵與樣本集中資料對應的特徵進行比較,然後演算法提供樣本集中特徵最相似資料 最鄰近 的分類標...
機器學習 k鄰近演算法 KNN
title 機器學習 k鄰近演算法 knn date 2019 11 16 20 20 41 mathjax true categories 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img ae8zaru7 1573908679258 1573907207887.png 現在我們...