1 資料集介紹:
虹膜
150個例項
萼片長度,萼片寬度,花瓣長度,花瓣寬度
(sepal length, sepal width, petal length and petal width)
類別:
iris setosa, iris versicolor, iris virginica.
利用python的機器學習庫sklearn: sklearnexample.py
from sklearn import neighbors
from sklearn import datasets
knn = neighbors.kneighborsclassifier()
iris = datasets.load_iris()
print iris
knn.fit(iris.data, iris.target)
predictedlabel = knn.predict([[0.1, 0.2, 0.3, 0.4]])
print predictedlabel
3.手寫knn演算法:
import csv
import random
import math
import operator
from webbrowser import opera
defloaddataset
(filename,split,trainingset=,testset=):
with open(filename,'rb') as csvfile:
lines=csv.reader(csvfile)
dataset=list(lines)
for x in range(len(dataset)-1):
for y in range(4):
dataset[x][y]=float(dataset[x][y])
if random.random()else:
defeuclideandistance
(testinstance, traininstance, lenght):
distance=0;
for x in range(lenght):
distance+=(testinstance[x]-traininstance[x])**2;
return math.sqrt(distance)
defgetneighbors
(trainingset, testinstance, k):
distances=
lenght=len(testinstance)-1
for x in range(len(trainingset)):
dist=euclideandistance(testinstance,trainingset[x],lenght)
distances.sort( key=operator.itemgetter(1))
neighbors=
for x in range(k):
return neighbors
defgetresponse
(neighbors):
classvotes={}
for x in range(len(neighbors)):
response=neighbors[x][-1]
if response in classvotes:
classvotes[response]+=1
else:
classvotes[response]=1
sortedvotes=sorted(classvotes.iteritems(),key=operator.itemgetter(1),reverse=true)
return sortedvotes[0][0]
defgetaccuracy
(testset, predictions):
correct=0
for x in range(len(testset)):
if testset[x][-1]==predictions[x]:
correct+=1
return (correct/float(len(testset)))*100.0
defmain
(): trainingset=
testset=
loaddataset("irisdata.csv", 0.67, trainingset, testset)
print
"trainingset:",trainingset
print
"testset:",testset
predictions=
k=3for x in range(len(testset)):
neighbors=getneighbors(trainingset,testset[x],k)
result=getresponse(neighbors)
print ('>predicted='+repr(result)+',actual='+repr(testset[x][-1]))
accuracy=getaccuracy(testset,predictions)
print('accuracy:'+repr(accuracy)+'%')
if __name__=="__main__":
main()
最近鄰規則演算法(KNN)
最近鄰演算法 knn 是乙個基於例項學習的分類演算法。如果乙個例項在特徵空間中的k個最相似 即特徵空間中最近鄰 的例項中的大多數屬於某乙個類別,則該例項也屬於這個類別。所選擇的鄰居都是已經正確分類的例項。演算法步驟 1 把所有分類好的 有標籤label 的資料 例項 作為訓練集 2 選擇好引數k 3...
KNN最近鄰分類演算法梳理
k最近鄰 knn,k nearestneighbor 分類演算法是資料探勘分類技術中最簡單的方法之一。其指導思想是 近朱者赤,近墨者黑 即由你的鄰居來推斷出你的類別。所謂k最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。knn最鄰近分類演算法的實現原理 為了判斷未知...
kNN 最近鄰分類器
以下都是個人對於knn的一些認識,可能有比較大的問題,望大家批評指正。knn分類器是一種消極的學習期,其並不事先建立明確的學習模型,是一種簡單的基於儲存的學習。應用範圍 主要針對簡單的分類問題。主要思想 找到與待檢測點距離最小的k個樣本點的分類情況,取最多的那類為待檢測點的分類。需要的內容 有標記的...