學習筆記 機器學習實戰 KNN

2021-08-20 10:50:10 字數 1042 閱讀 8036

knn演算法注釋版,新手小白,有錯誤歡迎指正

環境:python 3.6

#knn分類器

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

#inx為行向量

datasize = dataset.shape[0]#求訓練集的行數

diffmat = tile(inx ,(datasize,1)) - dataset#各元素求差,返回矩陣型別

diffmat = array(diffmat)#轉換成array型別,**代表每個元素的平方,mat型別的**表示矩陣的平方

sqdiffmat = diffmat**2 #各元素平方,返回array型別

sqdistance = sqdiffmat.sum(axis=1)#axis=1表示行,整條語句表示行向量相加,返回array型別

distances = sqdistance**0.5#各元素開方,返回array型別

sorteddistindicies = distances.argsort()#從小到大排序,返回array型別

classcount = {}#定義字典資料型別

for i in range(k):

#取出字典中的key

voteilabel = labels[sorteddistindicies[i]]

#classcount中是否有voteilabel這個key,有則取出key的值並且+1,沒有則新增該key並初始化為0,再加1

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

sortedclasscount = sorted(classcount.items(),#可迭代的物件,items()返回可遍歷的元組陣列

key = operator.itemgetter(1),#按照第二個元素的次序進行排序(下標從0開始)

reverse=true)#降序

return sortedclasscount[0][0]#返回分類的結果

參考資料: 

機器學習實戰《學習筆記》 KNN

新增編碼方式 coding utf 8 from numpy import import operator 準備資料 defcreatedataset group array 1.0,1.1 1.0,1.0 0,0 0,0.1 labels a a b b return group,labels 使...

機器學習實戰 kNN

一 演算法過程 1 首先存在乙個資料集作為訓練樣本集dataset,比如訓練樣本的資料中,每一條資料都包含乙個城市的某一天空氣中的pm2.5,no2濃度等維度的特徵值。每一條資料同時包含乙個標籤,比如這一天的空氣質素是優,良,輕度汙染,中度汙染,重度汙染中的乙個。2 現在我們輸入一條資料inx,如包...

機器學習實戰 KNN

import numpy as np import operator def createdataset group np.array 1.0,1.1 1.0,1.0 0,0 0,0.1 labels a a b b return group,labels def classify0 inx,dat...