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

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

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭