關於knn的python程式(出自yabea)
#coding:utf-8from 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 原理 工 作 原 理 是 存 在 一 個 樣 本 資料 集 合 也 稱 作 訓練 樣 本 集 並 且 樣 本 集 中 每 個 數 據 都 存 在 標 籤 即 我 們 知 道 樣 本 集 中 每 一 數 據與 所 屬 分 類 的 對 應關係 輸 人 沒 有 標 籤 的 新 ...