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

2021-07-05 12:29:08 字數 1315 閱讀 1254

#-*-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個相似資...