目录
配置环境
KNN算法预习
识别手写数字
KNN算法预习
识别手写数字
配置环境
跟着网上的教程安装了python3.8.8,发现跑别人的代码要安装很多环境——Numpy+MKL、Scipy、Pandas、sklearn库等等等。
百度了一下,学到了一个很好用且很快的方法:win+R 打开cmd,输入下面这段,install后面跟想安装的库名即可
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
手动装了一堆环境以后,发现直接安装Anaconda就好了,不用上面那么麻烦,真好
因为已经安装了python,实在害怕再装Anaconda会有问题,又csd了一下,找到了一个非常非常详细的python+anaconda安装教程
python与anaconda安装(先安装了python后安装anaconda,基于python已存在的基础上安装anaconda)——逼死强迫症、超详解_NBS的博客-CSDN博客
终于配好了
KNN算法预习
K近邻算法:环境影响决策
- :找到待测样本周围最近的已知样本点
- :统计周围已知样本点(k个)分布状况
- :将待测样本点归为优势方
优点:1.直观,好理解2.只需要分析部分已知样本点,不需要统计整体。
缺点:1.估算的结果不一定符合全局的分布。2.k的取值对结果影响较大。
补充:为了保证一个合理的k的取值,我们会采取“交叉验证”找到哪个k的设置会保证最优的估算。
两点之间的距离:
以此类推多维空间的点间距离:
还有曼哈顿距离、欧几里得距离、明可夫斯基距离是用来估量哪些是离待测样本近的点
当需要使用分类算法,且数据比较大的时候就可以尝试使用KNN算法
识别手写数字
识别手写数字是机器学习中的10分类问题,且数据较多,所以用KNN算法来实现。
首先,采集数据——采集手写数字的图像,并处理这些数据——将图像格式化处理为测试向量
用这段代码实现图像转换为向量,得到数据集
将得到的数据集输入分类器,分类器如下代码段
由于个人编写代码能力有限,我在GitHub上找了一段完善的代码理解并运行
GitHub - lixi5338619/KNN_Distinguish: KNN实现手写数字识别
得到结果
用KNN算法实现识别手写数据集,正确率为98.94%,当训练集样本发生改变时,正确率也会变化,这也正是KNN算法的特点之一,但该算法的执行效率较低。



