LIBSVM 是台湾大学林智仁( Chih-Jen Lin)教授开发的。

说明:本教程仅针对电脑为64位的计算机,如果是32位的计算机需要下载C语言编辑器进行手动编译。

1.下载libsvm

①下载地址在其官网:https://www.csie.ntu.edu.tw/~cjlin/libsvm/

注意:这里需要右击“在新标签页中打开链接”

②解压安装包

2.安装libsvm

① 将解压好的文件夹粘贴到Matlab的安装路径下的toolbox中

② 打开matlab设置工具箱

③添加工具箱文件


选择“添加并包含子文件夹”,选择刚才相同的libsvm-3.24

④ 打开预设进行设置

点击“更新工具箱路径缓存”

3.验证是否安装成功

下载测试数据集:https://share.weiyun.com/5LGqTGa
创建脚本输入:

clc;clear;
load heart_scale.mat
model = svmtrain(heart_scale_label,heart_scale_inst, '-c 1 -g 0.07');
[predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model);

如果输出如图所示,表明安装成功!

4.libsvm参数说明

这里首先推荐大家看一下官方给的参考文档:https://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

如果英文文档看着不舒服,丢到网易有道翻译器中翻译下

这里参考唱一半的歌歌转载的文章进行说明:

4.1训练参数

model = libsvmtrain(training_label, training_label ['libsvm_options']);

training_label:训练集的标签y
training_data:训练集数据x

可选参数libsvm_options选项如下:

-s svm类型:SVM设置类型(默认0)
    0 — C-SVC; 1 –v-SVC; 2 – 一类SVM; 3 — e-SVR; 4 — v-SVR
-t 核函数类型:核函数设置类型(默认2)
    0 – 线性核函数
    1 – 多项式核函数poly
    2 – RBF(径向基)核函数
    3 – sigmoid核函数
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
-g r(gamma):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/k,k为总类别数)
-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)
-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)
-p p:设置e -SVR 中损失函数p的值(默认0.1)
-m cachesize:设置cache内存大小,以MB为单位(默认40)
-e eps:设置允许的终止判据(默认0.001)
-h shrinking:是否使用启发式,0或1(默认1)
-wi weight:设置第几类的参数C为weight*C (C-SVC中的C) (默认1)
-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2

4.2 训练返回参数

-Parameters: 一个5 x 1的矩阵,从上到下依次表示:
    -s SVM类型(默认0);
    -t 核函数类型(默认2)
    -d 核函数中的degree设置(针对多项式核函数)(默认3);
    -g 核函数中的r(gamma)函数设置(针对多项式/rbf/sigmoid核函数) (默认类别数目的倒数);
    -r 核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
-nr_class: 表示数据集中有多少类别,比如二分类时这个值即为2。
-totalSV: 表示支持向量的总数。
-rho: 决策函数wx+b中的常数项的相反数(-b)。
-Label: 表示数据集中类别的标签,比如二分类常见的1和-1。
-ProbA: 使用-b参数时用于概率估计的数值,否则为空。
-ProbB: 使用-b参数时用于概率估计的数值,否则为空。
-nSV: 表示每类样本的支持向量的数目,和Label的类别标签对应。如Label=[1; -1],nSV=[63; 67],则标签为1的样本有63个支持向量,标签为-1的有67个。
-sv_coef: 表示每个支持向量在决策函数中的系数。
-SVs: 表示所有的支持向量,如果特征是n维的,支持向量一共有m个,则为m x n的稀疏矩阵。

4.3 预测参数

[predict_label, accuracy, dec_values] = svmpredict(test_label, test_data, model);

test_label:验证集的标签y
test_data:验证集数据x

4.4 预测返回的参数


-predicted_label:第一个返回值,表示样本的预测类标号。
-accuracy:第二个返回值,一个3 x 1的数组,表示分类的正确率、回归的均方根误差、回归的平方相关系数。
-decision_values/prob_estimates:第三个返回值,一个矩阵包含决策的值或者概率估计。对于n个预测样本、k类的问题,如果指定“-b 1”参数,则n x k的矩阵,每一行表示这个样本分别属于每一个类别的概率;如果没有指定“-b 1”参数,则为n x k*(k-1)/2的矩阵,每一行表示k(k-1)/2个二分类SVM的预测结果。

5.参数寻优

官方大大给了我们明确的提示,可以利用python和gunplot来进行参数寻优~

翻译如下:

我们现在为不了解SVM的用户提供了一个简单的脚本(easy.py)。它使一切变得自动化-从数据缩放到参数选择。
参数选择工具grid.py生成以下交叉验证精度轮廓。要使用此工具,您还需要安装python 和 gnuplot。

5.1 下载python和gnuplot

下载python过程略
下载gnuplot:
两种方式:
①官网下载(速度贼慢,外网你懂的)

②某盘链接提供给你们,就是不是最新版本的gnuplot
链接:https://pan.baidu.com/s/1VE72XqOErGFQqJeuI3lIug
提取码:wel5

5.2 安装gnuplot

找到下载好的安装包进行安装(可以默认路径,但是你一定要记得)
一般软件安装的默认路径为C;\ProgramFiles\gnuplot

5.3 测试寻优过程

①找到自己装的libsvm路径下的tools文件夹下的grid.py

②打开grid.py(这里我是使用的Pycharm2020)
修改两个地方:

  • self.svmtrain_pathname

在你的libsvm-3.24文件下windows文件夹下游svm-train.exe
将他的路径复制到self.svmtrain_pathname后面

  • self.gnuplot_pathname

在你刚刚安装的gnuplot文件下的bin目录下会有gnuplot.exe
将他的路径复制到self.gnuplot_pathname后面


③将libsvm-3.24文件夹自带的测试案例heart-scale复制到与grid.py同级目录下(即tools文件夹下)

④打开cmd命令控制窗口,进入grid.py文件目录下

输入命令:

python grid.py heart_scale


结果为:C=2048.0;γ=0.0001220703125;交叉验证精度CV Rate=84.0741%

⑤打开刚刚的tools文件,会发现多出来两个文件

一个是寻优过程,一个是寻优图像

当然如果是你熟悉python代码,可以它的源码库进行代码修改,把图片的标题,坐标轴改成你喜欢的样式~

5.4 自己的数据文件寻优

同样的方法,将数据文件放在grid.py文件夹下,然后在cmd中执行
python grid.py xxx(文件名)即可

另外,如果不知道怎么将数据格式转化为libsvm格式的文件,见第六章

6.Weka软件的使用

Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化(与之对应的是SPSS公司商业数据挖掘产品–Clementine )的,基于JAVA环境下开源的机器学习(machine learning)以及数据挖掘(data mining)软件。【摘自百度百科】

6.1 weka下载

其官网位置:https://www.cs.waikato.ac.nz/ml/weka/
① 点击Download

② 选择计算机操作系统进行下载

③ 会自动跳转到下载页进行下载

(这是下载结束后的)

6.2 weka软件的安装

安装非常简单,选择你的安装目录进行“下一步安装大法”就行。

6.3 数据文件转libsvm

① 将数据文件事先准备好,保存格式为csv格式

  • 最后一列为标签列
  • 最后一列前面的都是数据维度
  • 第一行需要加索引序号

xlsx的excel文件保存为csv格式

② 打开weka


打开直接保存的csv文件

③ 保存libsvm格式的文件

libsvm安装使用及网格搜索法参数寻优相关推荐

  1. 如何使用matlab参数寻优,LIBSVM在matlab中使用小结

    安装环节: 以下我说一下,我安装过程中所遇到的困难 1.matlab未安装完整导致编译后libsvm仍无法使用 对于32位的系统,libsvm没有现成的命令执行文件供matlab调用,因此需要我们自己 ...

  2. MATLAB中使用LIBSVM进行SVM参数寻优

    MATLAB中使用LIBSVM进行SVM参数寻优 一些资源网站 配置 svmtrain svmParams -t:表示选择的核函数类型 -g为核函数的参数系数 -c为惩罚因子系数 -v为交叉验证的数, ...

  3. python svm超参数_grid search 超参数寻优

    http://scikit-learn.org/stable/modules/grid_search.html 1. 超参数寻优方法 gridsearchCV 和  RandomizedSearchC ...

  4. 自定义函数使用GridSearchCV参数寻优

    自定义函数使用GridSearchCV参数寻优 GirdSearchCV and RandomizedSearchCV 自定义函数中使用GirdSearchCV GridSearchCV参数说明 Gr ...

  5. Keras训练神经网络进行分类并使用GridSearchCV进行参数寻优

    Keras训练神经网络进行分类并使用GridSearchCV进行参数寻优 在机器学习模型中,需要人工选择的参数称为超参数.比如随机森林中决策树的个数,人工神经网络模型中隐藏层层数和每层的节点个数,正则 ...

  6. sklearn 交叉验证与参数寻优

    3.3. Model evaluation: quantifying the quality of predictions - scikit-learn 0.19.2 documentation sk ...

  7. 【超参数寻优】交叉验证(Cross Validation)超参数寻优的python实现:多参数寻优

    [超参数寻优]交叉验证(Cross Validation)超参数寻优的python实现:多参数寻优 一.网格搜索原理 二.网格搜索+交叉验证用于多参数寻优的python实现 1.训练模型及待寻优参数 ...

  8. (MCTS)蒙特卡洛树搜索——参数寻优

    文章目录 Zero.写作动机 一.模型原理 二.编程实现 Notice. Zero.写作动机 对给定参数区间内部进行搜索,寻找到最优参数近似解的方法有很多.比如网格搜索.但是网格搜索太过暴力,往往花销 ...

  9. 参数寻优问题详细解析

    参数寻优 参数寻优背景 参数寻优问题随处可见,举几个例子.  1. 小明假期结束回校,可以坐火车,可以坐汽车,可以坐飞机,还可以走着,小明从哪条路去学校更好呢?  2. 简单的数学,一元二次方程求根. ...

最新文章

  1. MYSQL 数据库迁移 ***
  2. 使用WindowsLive Writer2012和officeWord2013发布到博客园全面总结
  3. 浅谈python+requests接口自动化框架
  4. 【FPGA】FIFO的Verilog设计之同步FIFO的设计
  5. 互联网思维-标签思维(2)
  6. 行业发展之关于有用信息和无用信息的思考
  7. python数字类型及运算_Python类型和运算--数字
  8. 给特殊类型的Note设置default值
  9. python3(十四)Python 异常处理
  10. .net cf的label问题
  11. origin对数据进行操作
  12. 学习网站及工具地址汇总
  13. 关于android 使用audiorecord 录制pcm文件 音频速度变快的问题求教
  14. 将logstash与elasticsearch性能匹配的几点尝试
  15. 简单易懂的新手建网站教程
  16. 如何将word文档内容在网页显示方法
  17. 似然函数以及最大似然估计
  18. jQuery实现ajax跨域请求
  19. 条件概率和事件的相互独立性
  20. 中石油12203-Darker and Darker

热门文章

  1. 杰理6905A芯片引脚的设置
  2. java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组
  3. iOS 轻松使用 App 数据统计
  4. 用Python找回微信撤回信息,就算撤回了我也看的到~
  5. RabbitMq 有啥用
  6. 【无标题】7-11 sdut-C语言实验- 数列有序! 7-12 sdut-C语言实验- 中位数 7-13 sdut-C语言实验-各位数字之和排序 7-14 sdut-C语言实验- 冒泡排序中数据交换
  7. OA系统实现(请假审批,mybatis)-2
  8. JAVA虚拟机学习总结
  9. 二、操作系统实例列举
  10. 进军元宇宙,Akutars是什么来头?首发与众多知名潮牌联名