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

 机器学习与人工智能一起作为当前最流行的一个概念,目前已经被广泛的应用到各个领域,如人们常用的微信、支付宝、百度等,这些软件里面都集成了机器学习算法,以实现各种智能化的操作,让用户体验更加,如在百度的在线识别图像应用,阿里巴巴的商品智能推荐、人脸识别验证等这些都用到了机器学习的相关技术,当然有的是更高级的深度学习(其实质也是机器学习的一种,更加高大上,具体概念以及关于机器学习、深度学习和模式识别大家可以参考深度学习 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上实现。

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

在现代发电领域,确保电力设施的稳定运行对保障能源供应和社会经济发展至关重要。随着发电技术的飞速发展,发电设备日益复杂,运维工作面临诸多挑战。传统运维模式在应对设备故障、技术传承、远程支持等方面逐渐力不从心,难以满足高效、...

关键字: 电力设施 远程协作 发电领域

直流电机由于其独特的性能特点,在众多工况中都发挥着重要作用。在工业生产领域,直流电机常用于需要精确调速和高动态响应的场合。

关键字: 直流电机

由于科技不断地发展,晶体管的出现,上世纪六、七十年代电子管被晶体管的强大洪流冲走

关键字: 晶体管

在当今电子系统设计的复杂领域中,系统架构的选择宛如基石,深刻影响着电源和控制电路的设计,进而全方位塑造系统性能。不同架构在面对从交流电源到负载的能量流动控制任务时,因隔离栅位置、信号处理方式等差异,展现出截然不同的特性。...

关键字: 电子系统 控制电路 架构

在现代智能控制领域,磁保持继电器凭借其独特的性能优势,正逐渐成为实现高效、可靠控制的关键组件。磁保持继电器(Magnetic Latching Relay, MLR)基于电磁原理实现开关控制,其工作方式在智能控制系统中展...

关键字: 磁保持继电器 智能控制 控制逻辑

在科技飞速发展的当下,智能照明系统正逐渐走入人们的生活,为我们带来更加便捷、高效且节能的照明体验。在众多使智能照明实现智能化的技术中,红外感应技术凭借其独特的优势,成为了智能照明系统中的关键组成部分,发挥着不可替代的作用...

关键字: 智能照明 红外感应 智能化

测距范围是激光雷达的基础指标,决定了机器人的感知范围。在开阔的仓储环境中,长测距范围的激光雷达可使 AGV 提前感知远处的货架和障碍物,保障高效运行;而在室内服务机器人场景,虽测距范围需求相对小,但仍需覆盖常见家具布局范...

关键字: 激光雷达 机器人 传感器

在现代社会,电力系统如同支撑经济社会运行的 “主动脉”,其安全稳定运行至关重要。高压并联电容器作为电力系统中的关键设备,对维持电力系统的高效运行发挥着不可或缺的作用。

关键字: 电容器 电力系统 电气设备

在科技飞速发展的当下,智能设备已深度融入人们的生活与工作。其中,PDA(Personal Digital Assistant,个人数字助理)作为一款集信息输入、存储、管理和传递于一体,且具备办公、娱乐、移动通信等多种功能...

关键字: 智能设备 触摸屏 微控制器

在现代制造业的快速发展进程中,智能激光焊接机器人作为一项融合了先进激光技术、智能控制技术与机器人自动化技术的创新成果,正逐渐崭露头角,成为推动各行业生产变革的关键力量。它以其独特的优势,在众多领域得到广泛应用,同时也面临...

关键字: 激光焊接 机器人 自动化
关闭