Knn手写体识别(二)

本文通过循环测试Knn算法中k值从1到10的效果,发现当k取3或4时,识别效果最佳,原因是较小的k可能导致样本不足,而较大的k则引入过多噪声。最终,考虑到效率和准确性,选择k=3作为最优参数,与百度结果一致。
摘要由CSDN通过智能技术生成

对课本原有代码加入循环,从1到10改变Knn的k值,进一步测试当k取哪个值时代码效果最好

结果如下:

结果显示,当K取3或4时代码效果最好,猜测原因为K取1,2时参考的样本偏少,故结果不如3,4的要好,而取太多时失去近邻性,其他样本反而干扰正确率

3和4时测试结果一样,考虑时间效率取3最优

这与百度的结果相符合

 

 

加入循环后的代码:

# -*- coding: UTF-8 -*-
import numpy as np
import operator
from os import listdir

"""
函数说明:kNN算法,分类器

Parameters:
    inX - 用于分类的数据(测试集)
    dataSet - 用于训练的数据(训练集)
    labes - 分类标签
    k - kNN算法参数,选择距离最小的k个点
Returns:
    sortedClassCount[0][0] - 分类结果

Modify:
    2017-03-25
"""


def

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值