2回答

2收藏

[原创] 树莓派上跑得动的机器学习算法

Raspberry Pi Raspberry Pi 7354 人阅读 | 2 人回复 | 2018-01-09

一、介绍
这个帖子的原因在于,在比赛作品设计的过程中,有需要用到识别算法,但是树莓派的运算能力确实是有限,像神经网络,层数多了、数据量大了,根本就无法在短时间内完成计算,但是机器学习的一些算法还是能跑得动的,我在设计作品的过程中用到了支持向量机,他大概的原理如图所示,通过找到分类函数将两个不同的类分开。


为了求得这个分界面函数,中间的数学推导有涉及对偶、拉格朗日乘法求极值等系列运算。

进一步的,而现实中分类器往往不是一条线就能实现的,那么为了拟合出这个曲面,从而引入了核函数,比如上图中的直线也是一种核函数。


二、使用

SVM中下载到源码,编译,树莓派用最多还是python,因此,我使用了其python的接口,并将编译好的文件放到网站上
libsvm-3.22.rar (51.15 KB, 下载次数: 14)

python使用svm分成三个步骤,采集数据、训练模型、预测
假设我们已经有了数据了,采用svmtrain进行训练,并保存模型,预测时,采用生成的模型进行预测。
  1. from svmutil import *
  2. y, x = svm_read_problem('../heart_scale')
  3. m = svm_train(y[:200], x[:200], '-c 4')
  4. svm_save_model('model_file', m)
  5. p_label, p_acc, p_val = svm_predict(y[200:], x[200:], m)
复制代码
运行的结果如下,准确率84.2857%,有点低,因为我没有调节参数。

调参,主要是train中的'-c 4'这个参数,一般情况下都会使用RBF核,并调节c g两个参数,调参可以现在电脑上用matlab进行网格寻优、或者PSO寻优,把训练好的参数记下,然后利用这两个参数来训练树莓派上的模型。
那么模型长啥样的的?模型开始会说明使用的核,以及核的参数,从图中可以看出这是个二分类的问题,因此标签是1和-1两种

后期,将利用这个数学模型和数据进行模型训练得到
分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

zcchinese

发表于 2018-3-6 14:35:14 | 只看该作者

感谢分享,非常给力
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条