当前位置:首页 > 智能硬件 > 智能硬件
[导读]机器学习与人工智能一起作为当前最流行的一个概念,目前已经被广泛的应用到各个领域,如人们常用的微信、支付宝、百度等,这些软件里面都集成了机器学习算法,以实现各种智能化的操作,让用户体验更加,如在百度的在线识别图像应用,阿里巴巴的商品智能推荐、人脸识别验证等这些都用到了机器学习的相关技术,当然有的是更高级的深度学习。

 机器学习与人工智能一起作为当前最流行的一个概念,目前已经被广泛的应用到各个领域,如人们常用的微信、支付宝、百度等,这些软件里面都集成了机器学习算法,以实现各种智能化的操作,让用户体验更加,如在百度的在线识别图像应用,阿里巴巴的商品智能推荐、人脸识别验证等这些都用到了机器学习的相关技术,当然有的是更高级的深度学习(其实质也是机器学习的一种,更加高大上,具体概念以及关于机器学习、深度学习和模式识别大家可以参考深度学习 vs 机器学习 vs 模式识别三种技术对比这篇文章),但是机器学习只能用在这些高大上的地方么?当然不是,其实在我们普通的开发者想DIY自己的东西的时候,也可以用到机器学习,如在你的智能车视觉避障中就可以用机器学习来构建障碍物模型,在人脸识别中就可以用机器学习来不断优化识别结果,好了废话不多说了,如果能够在自己的DIY中,在你的Dragonboard 410c中用上机器学习,是不是更高大上?

 


 

机器学习的算法非常多,今天给大家来一个入门级别的,也是机器学习中最简单的一个算法,K-近邻算法(KNN),该算法是采用不同特征值之间的距离的方法来对不同的对象进行分类,在具体的操作过程中我们需要一个样本集,这个样本集中的所有的特征数据都有一个对应的标签,即这个样本集中所有的数据所对应的分类属性我们是知道的,然后再输入新的数据的时候,KNN算法就通过计算实现新数据与样本数据的比较,同时提取样本中特征最相似的数据对应的分类标签,在具体的KNN处理过程中,通常只选取样本数据的前k个最相似的数据,然后选取这前k个数据中出现次数最多的标签作为结果。

有了上述了解了,基本上你只要知道KNN就是一个简单的分类器,将东西进行分类,既然提到了分类,我们通过生活中简单的一个分类场景来向大家介绍KNN算法的具体实现原理和过程,并且结合Python脚本告诉大家怎么在Dragonbaord 410c上编写和运行KNN算法。

这里引用的是《机器学习实战》中的一个经典的学习例子,根据电影中出现的接吻镜头和打斗镜头的数量来判断一部电影是属于爱情片还是属于动作片,具体可以通过下图来进行描述:

 


 

在上图中,我们已经知道了六部电影的接吻镜头和打斗镜头的数目,但是如果给你一个新的电影,并且告诉你了接吻镜头和打斗镜头数,这个时候你该如何确定这部电影是什么类型电影呢?

在分析中,为了更好的看出我们已经知道的六部电影的各种镜头的数量和所属类型,下面给出了各个电影的镜头和类型分布表:

 


 

根据前面跟大家聊的KNN算法原理,我们主要是根据样本数据,计算未知的数据与样本数据的距离,然后根据标签出现频率来实现分类,这里我们如果用KNN来实现对根据已知的这六部电影的分类,来实现对未知电影的分类就非常简单了。其中KNN实现核心代码如下:

def classify0(inX, dataSet, labels, k):

dataSetSize = dataSet.shape[0]

diffMat = TIle(inX, (dataSetSize,1)) - dataSet

sqDiffMat = diffMat**2

sqDistances = sqDiffMat.sum(axis=1)

distances = sqDistances**0.5

sortedDisTIndicies = distances.argsort()

classCount={}

for i in range(k):

voteIlabel = labels[sortedDisTIndicies[i]]

classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1

sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)

return sortedClassCount[0][0]

上述代码中classify0包含了4个参数,分别用于输入向量inX、输入训练样本集dataSet、标签向量labels,选择最近邻居的数目参数k,在本文使用的KNN算法中,计算距离使用了常用的欧氏距离公式,如下:

 


 

详细的代码大家可以到 http://pan.baidu.com/s/1mh5W0XU 下载,

好了,准备好代码后,我们就可以进行测试了,将代码通过SD卡或者U盘拷贝到我们的Dragonbaord 410c上,然后输入cd命令跳转到代码目录下,输入Python,进入到Python命令模式,输入下面测试命令:

>>> import kNN

>>> group,lables = kNN.createDataSet()

>>>kNN,classify0([0,0],group,lables,3)

我们可以看到输出结果为B,如下图所示,同时大家在测试过程中也可以改变输入的[0,0]为其他值,测试结果。

 


 

到这里我们已经成功的完成在Dragonbaord 410c上借助于Python脚本完成了我们KNN算法的编写和测试,利用测试代码大家可以进行扩展,将该分类器用于你的DIY中的其他识别和分类中,让你的DIY变得更加智能,后期我将在机器学习系列blog中向大家进一步介绍更为复杂的机器学习算法和在Dragonbaord410c上实现。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

绕组系数、绕组宽度、绕线绝缘厚度、所有绕组的厚度等。此外,漏感还会受到工作频率的影响,随着工作频率的增大,漏感也会增大。

关键字: 变压器 漏感 整流电路

线性电源(Linear power supply)是先将交流电经过变压器降低电压幅值,再经过整流电路整流后,得到脉冲直流电,后经滤波得到带有微小波纹电压的直流电压。要达到高精度的直流电压,必须经过稳压电路进行稳压。

关键字: 线性电源 稳压 波纹电压

MC33035无刷直流电机控制器采用双极性模拟工艺制造,可在任何恶劣的工业环境条件下保证高品质和高稳定性。该控制器内含可用于正确整流时序的转子位置译码器。

关键字: 直流马达 控制电路 滤波器

可编程式直流电源是一种将控制电路、功率变换电路和开关稳压电路集成于一体的新型电源,具有体积小、重量轻、效率高、功能强等特点。

关键字: 可编程电源 直流电源 功率变换

随着科技的飞速发展,电子产品在我们日常生活中扮演着越来越重要的角色。而在这些电子产品中,接口作为连接设备与外部设备的桥梁,其重要性不言而喻。其中,Type-C接口作为一种新型的接口标准,因其独特的优势,逐渐成为了众多电子...

关键字: 电子产品 Type-C 接口

往复泵是一种重要的流体输送设备,广泛应用于化工、石油、制药、冶金等领域。其工作原理基于活塞在泵缸内的往复运动,通过改变泵缸内的容积来实现液体的吸入和排出。本文将详细阐述往复泵的工作原理、结构特点、性能参数以及应用领域,以...

关键字: 往复泵 泵缸 设备

液控单向阀,作为液压系统中的一种关键控制元件,在工程机械、冶金、化工、船舶等多个领域发挥着不可替代的作用。它利用控制液体对主阀芯进行开启和关闭操作,从而实现对液流方向的精确控制。本文将详细阐述液控单向阀的工作原理,包括其...

关键字: 液控单向阀 液压系统 控制元件

场效应管(Field Effect Transistor,简称FET)是一种重要的半导体器件,广泛应用于电子设备的各种电路中。它具有输入电阻高、噪声小、功耗低、动态范围大、易于集成、没有二次击穿现象、安全工作区域宽等优点...

关键字: 场效应管 半导体器件 电子设备

电子电路作为现代电子设备的重要组成部分,其稳定性和可靠性对于设备的正常运行至关重要。然而,在实际使用过程中,电子电路难免会出现各种故障,需要进行及时的维修。本文将详细介绍电子电路的维修方法,包括故障诊断、维修步骤、维修技...

关键字: 电子电路 现代电子设备 维修

随着科技的不断发展,颜色传感器在多个领域中的应用越来越广泛。TCS230作为一款高性能的颜色传感器,因其出色的性能和稳定性受到了广泛关注。本文将详细阐述TCS230颜色传感器的工作原理,包括其结构、功能特点以及颜色检测机...

关键字: 颜色传感器 TCS230 光电二极管
关闭
关闭