【机器学习3】 k-近邻算法(kNN)—手写数字识别

k近邻法(k-nearest neighbor, k-NN)

原理:

存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。 最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。 

优缺点:

优点:精度高、对异常值不敏感、无数据输入假定。

缺点:计算复杂度高、空间复杂度高。

适用范围:数值型和标称型。

sklearn简介

sklearn(Scikit learn),是机器学习领域当中最知名的python模块之一。

使用sklearn可以很方便的实现一个机器学习算法。 有效减少我们特定任务的实现周期。达到只需要调用几行API即可实现一个复杂算法的效果。

包含了很多机器学习的方式:

 Classification 分类

 Regression 回归

 Clustering 非监督分类

 Dimensionality reduction 数据降维

 Model Selection 模型选择

  Preprocessing 数据与处理

Python实践案例:sklearn手写数字识别

已知: 软件处理后的 “需要识别的数字 ”的TXT数据文件。

           特点: 具有相同的色彩和大小:宽高是32像素x32像素。

                         文件有统一命名格式:数字的值_该数字的样本序号   

                        按 0-9 十个数字分类的文件,每个数字200个样本          

求:   未知数字文件是 0-9 中哪一个数字


数字文件示例

代码:


结果:



学习来源:《机器学习实战》 [美] Peter Harrington

                   Jack Cui 博文https://cuijiahua.com/

你可能感兴趣的:(【机器学习3】 k-近邻算法(kNN)—手写数字识别)