爱板网论坛

查看: 1788|回复: 2

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

[复制链接]

主题

好友

650

积分

举人

  • TA的每日心情
    开心
    2017-12-20 11:14
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

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


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

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


    二、使用

    SVM中下载到源码,编译,树莓派用最多还是python,因此,我使用了其python的接口,并将编译好的文件放到网站上
    libsvm-3.22.rar (51.15 KB, 下载次数: 11)
    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%,有点低,因为我没有调节参数。
    2018-01-09_204150.jpg

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

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

    使用道具 举报

    主题

    好友

    7

    积分

    白丁

    该用户从未签到

    发表于 2018-3-6 14:35:14 |显示全部楼层
    感谢分享,非常给力
    回复

    使用道具 举报

    主题

    好友

    203

    积分

    秀才

  • TA的每日心情
    开心
    2018-8-9 08:34
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2018-3-22 17:36:01 |显示全部楼层
    感谢分享!!!!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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

    手机版|爱板网

    GMT+8, 2018-9-23 13:12 , Processed in 0.100523 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-5   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001056号

    Powered by Discuz!

    返回顶部