Sklearn学习笔记##笔记三##KNN分类器的应用

Sklearn学习笔记##第一记

第一圈实线半径为0.5,第二圈虚线半径为1.0。
问题是我们如何给绿点归类呢?

图片引用于百度词条

如果我们给他限定一个范围,假设范围就是0.5。则此时红三角贡献2/3,把绿点归类为红三角。假设我们修改范围为1.0。则此时蓝方块贡献3/5,把绿点归类为蓝方块。

KNN分类

大致思路就是:一个样本在特征空间中的k个最相似的样本中的大多数属于某一类别,则样本也属于这个类别。
通俗说就是:在一个范围内,该物体的类型取决于离他最近的样本的类型。

读者自行学习深入知识
不多说了,开始了。

导入模块

sklearn在老本版中使用 sklearn.cross_validation import train_test_split 这个模块。该模块用下边的 模块取代。

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KneighborsClassifier

装载数据

将iris的数据装入iris_x 中,讲iris的类别装入iris_y

    Data=datasets.load_iris()
    iris_x=Data.data
    iris_y=Data.target

交叉验证

经数据拆分为训练集和验证集。test_size=0.2 设置验证集占20%。同时将数据打乱,有利于训练。

X_train,X_test,Y_train,Y_test=train_test_split(iris_x,iris_y,test_size=0.2)

建模

Knn=KNeighborsClassifier()

训练及验证

Knn.fit(X_train,Y_train) #用于训练
result=Knn.predict(X_test) #预测结果
print(Y_test) #输出测试集的结果

打分

score=knn.score(X_train,Y_train) #自我打分,对当前预测结果打分。
print(score)

结果

最终通过模型预测,输出的result预测值虽然有误差,但是都完全正确。最后的评估为0.99..

result:[0 0 2 1 0 1 2 2 2 0 2 1 0 0 2 0 2 2 1 0 2 2 2 0 2 1 1 2 0 0 2 2 2 0 0 1 2 0 1 0 2 1 0 1 1]

Y_test:[0 0 2 1 0 1 2 2 1 0 2 1 0 0 2 0 1 2 1 0 2 2 2 0 2 1 1 2 0 0 2 2 2 0 0 1 2 0 1 0 1 1 0 1 1]

score:0.990476190476

但我们修改K的值(n_neighborsn_neighbors=1时,准确率达到了1.0。

result:[1 2 1 0 2 2 0 1 1 1 0 1 1 2 1 2 1 1 0 1 1 2 1 2 2 2 2 2 0 2 0 1 2 2 2 2 2 1 2 1 0 0 0 1 2]

Y_test:[1 2 2 0 2 2 0 1 1 1 0 1 1 2 1 1 1 1 0 1 1 2 1 2 2 1 2 2 0 2 0 1 2 2 2 2 21 2 1 0 0 0 1 2]

score: 1.0

继续更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值