機器學習打卡練習之KNN演算法

2021-09-29 16:48:09 字數 1983 閱讀 8306

knn演算法,又名k鄰近演算法,簡單的來說,就是通過測量不同特徵值之間距離的方法進行分類。

演算法的原理十分簡單,舉個例子,假設我們要通過」打鬥鏡頭數「和接吻鏡頭數」這兩個特徵把電影分為愛情片和動作片,我們可以用一下步驟。

為使**重複使用方便,我們將運算過程寫在函式中,再將函式放置於python模組內。而非寫在指令碼中。

**如下。主要是根據書改的,修改了變數的名稱使可讀性增加。

from numpy import *

import operator

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

datasize = data.shape[0]

diffmat = tile(inx,(datasize,1))-data

sqdiff=diffmat ** 2

sqdist=sqdiff.sum(axis=1)

dists = sqdist**0.5

sorteddist = argsort(dists)

classcount={}

for i in range(k):

votelabel=labels[sorteddist[i]]

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

sortedcount=sorted(classcount.items(),key=operator.itemgetter(1),reverse=true)

return sortedcount[0][0]

def filetomat(filename):

fr=open(filename)

lines = fr.readlines()

linescount=len(lines)

res=zeros((linescount,3))

labels=

index = 0

for line in lines:

line = line.strip()

listfromline = line.split('\t')

res[index,:] = listfromline[0:3]

index += 1

return res,labels

def norm(data):

mins = data.min(0)

maxs = data.max(0)

ranges = maxs-mins

res = zeros(shape(data))

m=data.shape[0]

res=data-tile(mins,(m,1))

res=res/tile(ranges,(m,1))

return res,ranges,mins

def test():

horatio = 0.1

data,labels = filetomat('datingtestset2.txt')

normmat,ranges,mins = norm(data)

m = normmat.shape[0]

numtests = int(m*horatio)

errorcount = 0.0

for i in range(numtests):

classifyres = classify(normmat[i,:],normmat[numtests:m,:],labels[numtests:m],3)

print("分類結果:",classifyres,"正確答案:",labels[i])

if (classifyres != labels[i]):

errorcount+=1.0

print("平均出錯率:",errorcount/float(numtests))

之後,在命令列中輸入

import knn

knn.test()

即可對**進行測試。 

機器學習之KNN演算法

在幾位志同道合的小夥伴的帶領下,開始了機器學習的路程,然而一切並不是想象的那麼簡單,因此本文記錄了自己的學習路程,希望還能堅持做好這件事。knn演算法是機器學習中屬於比較簡單的演算法,容易理解和閱讀。1.knn的應用 客戶流失 欺詐偵測等 更適合於稀有事件的分類問題 2.優缺點 優點 這是乙個簡單有...

機器學習演算法之KNN

物以類聚 人以群分,乙個例項與它周圍的例項屬於同一類的概率較大。給定乙個訓練資料集,對新輸入的例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分為這個類。這裡,選用了歐氏距離,k的預設值為3,使用了sklearn提供的digits資料集來進行測試。inpu...

機器學習之kNN演算法

knn原理及實踐 1 演算法介紹 總的來說,機器學習入門的第乙個演算法是k 近鄰演算法 knn 它的工作原理是 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進...