機器學習 KNN演算法

2022-05-07 17:12:10 字數 1034 閱讀 2924

關於knn的python程式(出自yabea)

#coding:utf-8

from numpy import *

import operator

##給出訓練資料以及對應的類別

def createdataset():

group = array([[1.0,2.0],[1.2,0.1],[0.1,1.4],[0.3,3.5]])

labels = ['a','a','b','b']

return group,labels

###通過knn進行分類

def classify(input,datase t,label,k):

datasize = dataset.shape[0]

####計算歐式距離

diff = tile(input,(datasize,1)) - dataset

sqdiff = diff ** 2

squaredist = sum(sqdiff,axis = 1)###行向量分別相加,從而得到新的乙個行向量

dist = squaredist ** 0.5

##對距離進行排序

sorteddistindex = argsort(dist)##argsort()根據元素的值從大到小對元素進行排序,返回下標

classcount={}

for i in range(k):

votelabel = label[sorteddistindex[i]]

###對選取的k個樣本所屬的類別個數進行統計

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

###選取出現的類別次數最多的類別

maxcount = 0

for key,value in classcount.items():

if value > maxcount:

maxcount = value

classes = key

return classes

機器學習 演算法 KNN

參考 我感覺knn是最簡單的乙個機器學習演算法,實現很簡單,效果也一般般 就是算個euclideam distance,還有一些可以優化的地方,比如可以加權,第二篇文章提到了 python 如下 coding utf 8 created on aug 30,2013 author blacklaw ...

機器學習 KNN 演算法

一 主要目的 在樣本空間中,找到與待估計的樣本最臨近的k個鄰居,用這幾個鄰居的類別來估計待測樣本的類別 二 適用性 樣本容量比較大的類域的自動分類,而樣本容量較小的類域則容易誤分。尤其適用於樣本分類邊界不規則的情況 三 不足 1 當樣本不平衡時,比如乙個類的樣本容量很大,其他類的樣本容量很小,輸入乙...

機器學習 KNN演算法

一 近 鄰 算 法 knn 原理 工 作 原 理 是 存 在 一 個 樣 本 資料 集 合 也 稱 作 訓練 樣 本 集 並 且 樣 本 集 中 每 個 數 據 都 存 在 標 籤 即 我 們 知 道 樣 本 集 中 每 一 數 據與 所 屬 分 類 的 對 應關係 輸 人 沒 有 標 籤 的 新 ...