#-*-coding=utf-8-*-
__author__ = 'whf'
from numpy import *
import operator
def classify (inx,dataset,labels,k):
#得到資料集的行數 shape方法用來得到矩陣或陣列的維數
datasetsize = dataset.shape[0]
#tile:numpy中的函式。tile將原來的乙個陣列,擴充成了datasetsize行1列的陣列。diffmat得到了目標與訓練數值之間的差值。
diffmat = tile(inx,(datasetsize,1))-dataset
#計算差值的平方
sqdiffmat = diffmat**2
#計算差值平方和
sqdistances = sqdiffmat.sum(axis = 1)
#計算距離
distances = sqdistances**0.5
#得到排序後坐標的序號 argsort方法得到矩陣中每個元素的排序序號
sorteddistindicies = distances.argsort()
classcount = {}
for i in range(k):
#找到前k個距離最近的座標的標籤
voteilabel = labels[sorteddistindicies[i]]
#在字典中設定鍵值對: 標籤:出現的次數
classcount [voteilabel] = classcount.get(voteilabel,0)+1 #如果voteilable標籤在classcount中就得到它的值加1否則就是0+1
# 對字典中的類別出現次數進行排序,classcount中儲存的事 key-value,其中key就是label,value就是出現的次數
# 所以key=operator.itemgetter(1)選中的是value,也就是對次數進行排序 reverse = true表示降序排列
sortedclasscount = sorted(classcount.iteritems(),key=operator.itemgetter(1),reverse=true)
return sortedclasscount[0][0]
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['a','a','b','b']
print classify([0.1,0.1],group,labels,3)
機器學習 K 鄰近演算法 KNN
k 鄰近演算法 有監督演算法 演算法工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每乙個特徵與樣本集中資料對應的特徵進行比較,然後演算法提供樣本集中特徵最相似資料 最鄰近 的分類標...
機器學習 k鄰近演算法 KNN
title 機器學習 k鄰近演算法 knn date 2019 11 16 20 20 41 mathjax true categories 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img ae8zaru7 1573908679258 1573907207887.png 現在我們...
機器學習實戰筆記(k鄰近演算法)
1.k鄰近演算法原理 k鄰近演算法通過計算不同特徵值間的距離進行分類 存在乙個樣本資料集合,也稱為訓練樣本集,樣本集中每個資料都存在標籤。輸入沒有標籤的新資料後,將輸入資料中的每個特徵值和訓練樣本集進行比較,然後選出特徵最相似的資料集的標籤作為輸入資料集標籤。一般來說我們選取訓練樣本集中前k個相似資...