机器学习之K-近邻算法代码分析
来源:互联网 发布:java cs的前景 编辑:程序博客网 时间:2024/06/07 07:31
在看Peter的K-近邻实战时,发现原来“手写识别系统”不止是图像处理和图像识别可以解决,原来从图像也是矩阵数据的层面来看,不同数字的识别也是数据分类问题(2333……又打开了思维的新视角)。因本身是学图像处理出身,所以关于手写识别系统,思维受限在怎样进行图像处理、怎样训练数字模型、怎样进行数字识别了。
该文先简单在Jupyter上实现K-近邻算法。后续会专门通过一步步构造使用K-近邻分类器实现手写识别系统(识别数字0~9)。
基础知识准备——Python导入数据
在构造K-近邻算法之前,我们需要先编写一些通用函数,我们可以把所有的通用函数写的一个python文件(.py)下。下面写个例子,看下python里怎样写通用函数并调用。小编使用的Jupyter(可以直接在notebook下编写通用函数和测试,建立.py可选)。
依次执行Cells。In[4]和In[5]是定义了通用函数createDataSet(),函数里写死了一组数据和对应标签,标签有两类A和B。我们通过这个简单例子,可以大致了解Python如何解析数据和加载数据,上一篇了解了KNN算法的工作原理。下面使用这些知识和方法完成分类任务。
基础知识准备——文本文件中解析数据
该部分实现功能:使用k-近邻算法将魅族数据划分到某个类中,代码和释义如下:
输入参数inX:用于分类的输入向量;
输入参数dataSet:输入的训练样本集
输入参数labels:标签向量(元素数目和dataSet的行数相同)
输入参数k:用于选择最近邻的数目。
计算两个向量点xA和xB之间的距离用的欧式距离:
计算完所有点之间的距离后,对数据按照从小到大的次序排序。然后确定前k个距离最小元素所在的主要分类,输入k总是正整数。最后,将classCount字典分解为元组列表,然后导入运算符模块的itemgetter方法,按照第二个元素的次序对元组进行排序。此处的排序为逆序,即按照从最大到最小次序排序,最后返回发生频率最高的元素标签。
基础知识准备——测试分类器
为了预测数据所在分类,执行:
小结
在参照实例进行学习和测试的过程中,遇到了很多问题,有编程语法方面的,也有算法理解上的。但不管怎样,算是跑通了个实例。需要注意的是书里提供的代码有些问题,有的问题是因为python版本变化引起的,也有书写方式引起的,比如,在引用python模块时,尽量不要import *,需要用什么就import什么。
我能够看得更远,那是因为我站在巨人的肩上
— 艾萨克·牛顿
欢迎转发到朋友圈或分享给好友
- 机器学习之K-近邻算法代码分析
- 机器学习之K-近邻算法代码实现
- 机器学习笔记之K近邻算法
- 机器学习之K-近邻算法
- 机器学习实战之K-近邻算法
- python机器学习之K近邻算法
- 《机器学习实战》之K-近邻算法
- 机器学习之k-近邻算法
- python机器学习之 K-近邻算法
- 机器学习之k近邻算法
- 机器学习实战之k-近邻算法
- 机器学习之K-近邻算法
- 机器学习之K近邻算法
- 机器学习笔记之K-近邻算法
- 机器学习实战之K近邻算法
- 机器学习之K-近邻算法
- 机器学习之K-近邻算法
- 机器学习之K-近邻算法
- RTOS系统延时与普通软延时的特点与区别
- VB:按“ESC”退出窗体
- Linux常用命令
- mybatis-Typical or expected login exceptions should extend from AuthenticationException
- 短视频 | 10分钟解读智能问答开源项目YodaQA架构原理
- 机器学习之K-近邻算法代码分析
- Codeforces Round #413 C-Fountains 树状数组
- 书单下载 | 关于算法、编程、机器学习等书籍,也许正是你所需要的
- spark平台搭建
- 统计分享数量,mysql 写法(例如分享方式:发朋友圈或者好友数量)
- IDEA下利用Live Template编写注释模版
- 常用机器学习算法之线性回归
- 短视频 | 问答开源项目解读之整体代码流程和问题分析
- uCOS/FreeRTOS任务创建的两种模式