KNN的简单练习
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report,confusion_matrix
import operator
import random
def knn(x_test,x_data,y_data,k):
x_data_size=x_data.shape[0]
diffMat=np.tile(x_test,(x_data_size,1))-x_data
diffMat2=diffMat**2
dis=diffMat2.sum(axis=1)
dis=dis**0.5
sortedDistance=dis.argsort()
classCount={}
for i in range(k):
vis=y_data[sortedDistance[i]]
classCount[vis]=classCount.get(vis,0)+1;
sortVisCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
return sortVisCount[0][0]
iris=datasets.load_iris()
data_size=iris.data.shape[0]
ind=[i for i in range(0,data_size)]
random.shuffle(ind)
iris.data=iris.data[ind]
iris.target=iris.target[ind]
testDataNum=40
x_train=iris.data[testDataNum:]
y_train=iris.target[testDataNum:]
x_test=iris.data[:testDataNum]
y_test=iris.target[:testDataNum]
predict=[]
for i in range(testDataNum):
predict.append(knn(x_test[i],x_train,y_train,10))
print(confusion_matrix(y_test,predict))