• 使用LIBSVM工具实现样本分类预测——MatLab


    准备工作:

    1. https://www.csie.ntu.edu.tw/~cjlin/libsvm/,下载LIBSVM;(LIBSVM工具相较于MATLAB自带的工具:1).支持多分类及回归(‘-s 0’ ,‘-s 1' -> 多分类'-s 3';'-s 4' -> 回归;'-s 2' -> one-class SVM),matlab自带的仅支持二分类,且不支持回归2).支持核函数种类多样(linear;polynomial;RBF(radial basis function);sigmoid;precomputed kernel)3).解决算法是SMO(序列最小化),matlab自带的三种SMO,QP(经典二次规划),LS;4).能够调节RBF核函数的参数,matlab自带的不能调节)
    2. 将libsvm文件夹设为matlab搜索路径,并进入.../libsvm-3.xx/matlab目录; 
    3. 运行mex -setup,选择编译器(前提是要安装有C++编译器,如VS2010)
    4. 命令窗口输入:make,生成四个文件:libsvmread.mexw32,libsvmwrite.mexw32,svmtrain.mexw32,svmpredict.mexw32(原程序是C++编译的,这四个文件是编译后包含了能够在matlab环境下运行的算法)

    接下来便可以进行数据分类了:

    1. 在.../libsvm3.xx目录下运行:[label,inst] = libsvmread('heart_scale')(’heart_scale‘默认在libsvm主目录下,且libsvm要求有参数接受读取的结果,读取结果为:inst:270*13label:270*1)
    2. 运行:model = svmtrain(label,inst)(训练函数,由于matlab自带有svmtrain函数,因此需要进入matlab/toolbox/搜索svmtrain.m,将其改为svmtrain_matlab.m,否则会调用自带的svmtrain函数
    3. 其中:model.Paramaters = [-s,-t,-d,-g,-r](model的Paramaters输出了参数组)
    4. 运行:[predict,accuracy,probabilityEstimates] = svmpredict(label,inst,model)(利用模型预测所有样本,libsvm要求所有接受参数都填写,否则无输出)
    5. accuracy是一个3*1矩阵,

      86.6666666666667->准确度
      0.533333333333333->MSE(mean squared error)
      0.532639204545455->r^2(squared correlation coefficient)

  • 相关阅读:
    字符串、组合数据类型练习
    使用python画五星红旗
    常用linux操作
    关于大数据
    简易C语言文法
    实验一 词法分析系统
    关于计算机编译原理
    七号团队-团队任务4:每日例会(2018-11-28)
    七号团队-团队任务4:每日例会(2018-11-27)
    第七组,团队作业2
  • 原文地址:https://www.cnblogs.com/shadrach/p/5489100.html
Copyright © 2020-2023  润新知