Windows系统安装编译libsvm教程

A.SVM安装:

1. 在SVM工具包的根目录下,输入mex -setup选择C++编译器

2.在make文件夹下编译make.m生成二进制文件,libsvmread.mexw64、libsvmwrite.mexw64、svmtrain.mexw64、svmpredict.mexw64。

3. 将svmtrain.mexw64,svmpredict.mexw64修改成libsvmtrain.mexw64和libsvmpredict.mexw64,将修改后的.mexw64文件放在windows文件夹下。

4. 添加路径,在matlab的路径设置中添加libsvm工具包的路径。

B.测试:

[heart_scale_label, heart_scale_inst]  =  libsvmread('heart_scale');

model  =  libsvmtrain(heart_scale_label,heart_scale_inst, '-c 1 -g 0.07');

[predict_label, accuracy, dec_values] =libsvmpredict(heart_scale_label, heart_scale_inst, model);

出现以下结果说明安装正确:

C.使用

1. 训练

libsvm函数用于对训练集的数据进行训练,得到训练好的模型。

model=libsvmtrain(training_label_vector,training_instance_matrix,['libsvm_options']);

这个函数有三个参数,其中

  • -training_label_vector:训练样本的类标,如果有m个样本,就是m x 1的矩阵(类型必须为double)。这里可以是二分类和多分类,类标是(-1,1)、(1,2,3)或者其他任意用来表示不同的类别的数字,要转成double类型。
  • -training_instance_matrix:训练样本的特征,如果有m个样本,每个样本特征是n维,则为m x n的矩阵(类型必须为double)。
  • -libsvm_options:训练的参数。

2. 预测

libpredict函数用于对测试集的数据进行测试,还能对未知样本进行预测。

[predicted_label,accuracy, decision_values/prob_estimates]
= libsvmpredict(testing_label_vector, testing_instance_matrix, model,['libsvm_options']);

这个函数包括四个参数,其中

  • -testing_label_vector:测试样本的类标,如果有m个样本,就是m x 1的矩阵(类型必须为double)。如果类标未知,可以初始化为任意m x 1的double数组。
  • -testing_instance_matrix:测试样本的特征,如果有m个样本,每个样本特征是n维,则为m x n的矩阵(类型必须为double)。
  • -model:使用libsvmtrain返回的模型
  • -libsvm_options:预测的参数,与训练的参数形式一样。

3. 训练参数

LIBSVM训练时可以选择的参数很多,包括:

  • -s svm类型:SVM设置类型(默认0)
  • 0  C-SVC; 1  v-SVC; 2 一类SVM; 3  e-SVR; 4  v-SVR
  • -t 核函数类型:核函数设置类型(默认2)
        0 – 线性核函数:u’v
        1 – 多项式核函数:(r*u’v + coef0)^degree
        2 – RBF(径向基)核函数:exp(-r|u-v|^2)
        3 – sigmoid核函数:tanh(r*u’v + coef0)
  • -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

5. 训练返回的内容

libsvmtrain函数返回训练好的SVM分类器模型,可以用来对未知的样本进行预测。这个模型是一个结构体,包含以下成员:

-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的稀疏矩阵。

5. 预测返回的内容

libsvmtrain函数有三个返回值,不需要的值在Matlab可以用~进行代替。

  • -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的预测结果。

6. 读取或保存

libsvmread函数可以读取以LIBSVM格式存储的数据文件。

[label_vector,instance_matrix] = libsvmread(‘data.txt’);

这个函数输入的是文件的名字,输出为样本的类标和对应的特征。

libsvmwrite函数可以把Matlab的矩阵存储称为LIBSVM格式的文件。

libsvmwrite(‘data.txt’, label_vector,instance_matrix]

这个函数有三个输入,分别为保存的文件名、样本的类标和对应的特征(必须为double类型的稀疏矩阵)。

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值