knn实战:如何对手写数字进行识别?

本文介绍了如何使用Python的sklearn库实现KNN算法对手写数字进行识别。首先,讲解了如何创建KNN分类器,接着利用sklearn自带的MNIST手写数字数据集进行训练和测试。经过数据预处理、训练模型、评估准确率等步骤,得出KNN分类器在不同k值下的准确率,并与其他模型如SVM、朴素贝叶斯和决策树的准确率进行了对比。最后,讨论了模型对输入数据分布的要求以及在大数据量下选择深度学习的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Python 的 sklearn 工具包中有 KNN 算法。KNN 既可以做分类器,也可以做回归。

如果是做分类,你需要引用:

from sklearn.neighbors import KNeighborsClassifier

如果是做回归,你需要引用:

from sklearn.neighbors import KNeighborsRegressor

 

 

如何在 sklearn 中创建 KNN 分类器:

我们使用构造函数 KNeighborsClassifier(n_neighbors=5, weights=‘uniform’,algorithm=‘auto’, leaf_size=30),这里有几个比较主要的参数:

 

n_neighbors

即 KNN 中的 K 值,代表的是邻居的数量。

k小过拟合,k大欠拟合;一般默认使用5

weights

weights=uniform

 

代表所有邻居的权重相同

weights=distance

 

代表权重是距离的倒数,即与距离成反比
自定义函数 你可以自定义不同距离所对应的权重。

algorithm

 

algorithm=auto

 

根据数据的情况自动选择适合的算法,默认情况选择 auto

algorithm=kd_tree

 

也叫作 KD 树,是多维空间的数据结构,方便对关键数据进行检索;不过 KD 树适用于维度少的情况,一般维数不超过 20,如果维数大于 20 之后,效率反而会下降;

algorithm=ball_tree

 

 <

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值