KNN 的簡易實現 筆記

2021-06-26 21:20:49 字數 1057 閱讀 5261

書上有一部分的變數名字很長 然後偷換了一下 就變成了比較容易懂的了

主要是那個小駝峰命名實在是有點蛋疼了 我還是喜歡下劃線 

from numpy import *

import operator

def createdataset():

group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])

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

return group,labels

group,labels=createdataset();

#print group

#print labels

def classify0(inx,dataset,labels,k):

row_size=dataset.shape[0]

diffmat = tile(inx,(row_size,1)) - dataset

sqdiffmat = diffmat**2

sqdistances = sqdiffmat.sum(axis=1)

dis = sqdistances**0.5

# print dis

rk = dis.argsort()

# print rk

sum={}

for i in range(k):

j = labels[rk[i]]

sum[j]=sum.get(j,0)+1

_sort=sorted(sum.iteritems(),key=operator.itemgetter(1),reverse=true)

return _sort[0][0]

print classify0([999,999],group,labels,3)

1、確定已知的類別資料集中的點到當前點之間的距離

2、按照距離遞增次序排序

3、選取與當前點距離最小的k個點

4、確定前k個點所在的類別的出現頻率

5、返回前k個點出現頻率最高的類別作為當前點的**分類

筆記 KNN演算法實現分類和回歸

class knn def init self,k 初始化 self.k k deffit self,x,y 訓練方法 x 類陣列型別 二維 待訓練的樣本特徵 屬性 y 一維 樣本的目標值 標籤 self.x np.asarray x 轉化為ndarray陣列型別 self.y np.asarray...

KNN 手動實現

knn 的實質是根據 值 與訓練集之間的距離來進行分類。下面 使用 歐氏距離來表示點集之間的距離,具體 如下 class knn def fit self,x,y self.x train x self.y train y def predict self,x,k x train self.x tr...

KNN簡單實現

knn算是機器學習入門演算法中比較容易理解的了,要注意和k means的一些區別 knn k means 1.knn是分類演算法 2.監督學習 3.餵給它的資料集是帶label的資料,已經是完全正確的資料 1.k means是聚類演算法 2.非監督學習 3.餵給它的資料集是無label的資料,是雜亂...