KNN實踐判斷iris花的品種

2021-06-27 22:56:28 字數 1901 閱讀 8161

k鄰近(knn)演算法應該是機器學習演算法中最簡單的乙個吧。

knn(k nearest neighbors)演算法又叫k最臨近方法, 總體來說knn演算法是相對比較容易理解的演算法之一,假設每乙個類包含多個樣本資料,而且每個資料都有乙個唯一的類標記表示這些樣本是屬於哪乙個分類, knn就是計算每個樣本資料到待分類資料的距離,取和待分類資料最近的k各樣本資料,那麼這個k個樣本資料中哪個類別的樣本資料占多數,則待分類資料就屬於該類別。

不過knn的不足也很明顯,計算量大,每乙個判斷輸入都要掃一遍資料集,而且沒有訓練過程。

在uci

找到了一些資料集,資料算是非常簡單了

from numpy import *

import os

from collections import counter

def datapre(filepath):

fr = open(filepath)

filenumber = len(fr.readlines())

fr = open(filepath)

******line = fr.readline()

******line = ******line.strip()

colnumber = len(******line.split(',')) - 1

retmat = zeros((filenumber, colnumber))

classlabel =

index = 0

fr = open(filepath)

for line in fr.readlines():

line = line.strip()

cols = line.split(',')

retmat[index,:] = cols[0 : colnumber]

index += 1

return norm(retmat), classlabel

def norm(dataset):

minvals = dataset.min(0)

maxvals = dataset.max(0)

ranges = maxvals = minvals

normdataset = zeros(shape(dataset))

m = len(dataset)

normdataset = dataset - tile(minvals, (m, 1))

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

return normdataset

def classify(dataset, datasetlabel, input, k):

icols = input

print len(dataset[0])

if len(dataset[0]) != len(icols):

print 'input error'

return

diffmat = tile(icols, (len(dataset),1)) - dataset

sqdistancesmat = (diffmat**2).sum(axis=1)

distances = sqdistancesmat**0.5

sorteddistances = distances.argsort()

classcount =

for i in range(k):

predictlabel = datasetlabel[sorteddistances[i]]

frequent = counter(classcount)

return frequent.most_common(1)[0][0]

上面沒有測試資料,我自己做了一些資料測試,全中!bingo!

knn分類iris資料

題目 sklearn中的datasets方法匯入iris鳶尾花訓練樣本並用train test split產生測試樣本,用knn分類並輸出分類精度。data sklearn.datasets.iris.data label sklearn.datasets.iris.target 輸出 from s...

Python實現KNN演算法 iris資料集

在本文中,通過python實現knn演算法,而非簡單的呼叫sklearn庫,並通過iris鳶尾花資料集進行訓練和測試。詳情參見以下 if name main trainx,trainy,testx,testy loadsplitdataset prey knn testx evaluateknn 和...

KNN演算法 測試分類iris資料集

以iris資料集為例,簡單執行下knn的演算法 匯入常規要用的包 from sklearn.datasets import load iris from sklearn.neighbors import kneighborsclassifier from sklearn.model selectio...