搜索
您的当前位置:首页正文

python中的k n n算法实现

来源:榕意旅游网
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
np.random.seed(0)
#设置随机的种子,不设置的话默认是按照系统时间作为参数,设置后可以保证我们每次产生的随机数不一样
iris=datasets.load_iris()
#获取鸢尾花数据集
iris_x=iris.data   #数据部分
iris_y=iris.target   #类别部分
indices=np.random.permutation(len(iris_x))
#从150条数据中选140条作为训练集,10条作为测试集,permutation接收一个数作为参数(这里为数据集长度150),产生一个0-149乱序的一组数组
iris_x_train=iris_x[indices[:-10]]     #训练集数据
iris_y_train=iris_y[indices[:-10]]     #训练集标签
iris_x_test=iris_x[indices[-10:]]      #测试集数据
iris_y_test=iris_y[indices[-10:]]      #测试集标签
knn=KNeighborsClassifier()     #定义一个knn分类器对象
knn.fit(iris_x_train,iris_y_train)   #调用该对象的训练方法,主要接收两个参数:训练集数据及其类别标签
iris_y_predict=knn.predict(iris_x_test)    #调用预测方法,主要接收一个参数:测试数据集
probility=knn.predict_proba(iris_x_test)
#计算各测试样本预测的概率值,这里我们没有用概率值,但是在实际工作中可能会参考概率值来进行最后结果的筛选,而不是直接使用给出的预测标签
neighborpoint=knn.kneighbors([iris_x_test[-1]],5)
#计算最后一个测试样本距离最近的5个点,返回的是这些样本的序号组成的数组
score=knn.score(iris_x_test,iris_y_test,sample_weight=None)
#调用该对象的打分方法,计算出准确率
print('iris_y_predict')
print(iris_y_predict)
print('iris_y_test')
print(iris_y_test)
print('accuracy:',score)

结果输出:

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top