libsvm的使用心的体会
再次讨论libsvm的C-SVC问题关于wi参数的讨论

这个是用-s来调节的。
-s svm_typ e : set type of SVM (default 0)0 -- C-SVC1 -- nu-SVC2 -- one-class SVM3 -- epsilon-SVR4 -- nu-SVR-wi 这个参数就是调整不同类别的惩罚参数的。
-wi weight:set the paramet er C of class i to weight*C, for C-SVC (default 1)-wi 用法的一个小例子-wi weight:set the paramet er C of class i to weight*C, for C-SVC (default 1) (这个说的多明确啊,还不明白吗?囧)再说的明确,大白话一点如下:-wi weight可以将类别号为i 的这个类别的惩罚参数变为w eight*C比如测试数据有两类,标签分别为1-1 如果之前设置了c=14此时再用-w1 0.5 -w-1 10 参数设置则此时标签为1的这类的惩罚参数变为0.5*14 = 7标签为-1的这类的惩罚参数变为10*14 = 140http://www.ilovema /thread-89155-1-1.htmlLibsvm使用心得首先下载Lib svm、Python和Gnuplo t:l libsvm的主页.tw/~cjlin/libsvm/上下载libs vm (我自己用2.86版本)l python的主页http://www.python.org下载 python(我自己用2.5版本)l gnuplot的主页http://www.gnuplo/下载gnupl ot (我用4.0版本)LIBSVM使用的一般步骤是:1)按照LIBSV M软件包所要求的格式准备数据集;2)对数据进行简单的缩放操作;3)首要考虑选用R BF 核函数;4)采用交叉验证选择最佳参数C与g ;5)采用最佳参数C与g 对整个训练集进行训练获取支持向量机模型;6)利用获取的模型进行测试与预测。
Libsvm分类实验报告

一、LIBSVM介绍LIBSVM是台湾大学林智仁(Chih-Jen Lin)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件还有一个特点,就是对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数就可以解决很多问题;并且提供了交互检验(Cross Validation)的功能。
二、准备工作2.1软件下载安装使用的平台是Windows XP,从命令列执行。
先把一些需要的东西装好,总共需要三个软件:libsvm, python, gnuplot。
这里我选择的版本是libsvm-2.88,python26。
Libsvm:到.tw/~cjlin/libsvm/下载libsvm,然后解压缩就好了。
Python:到/download/下载完直接安装就好了。
Gnuplot:下载ftp:///pub/gnuplot/gp400win32.zip解压缩。
这里全部解压安装在c盘c:\libsvm-2.88c:\python26c:\gnuplot2.2参数修改(1)把c:\libsvm-2.88\tools中的easy.py和grid.py复制到c:\libsvm-2.91\python中(2)在c:\libsvm-2.88\python中修改easy.py和grid.py的路径:①点中easy.py在右键中选Edit with IDLE打开,将else下面的路径修改如下:else:# example for windowssvmscale_exe = r"c:\libsvm-2.88\windows\svm-scale.exe"svmtrain_exe = r"c:\libsvm-2.88\windows\svm-train.exe"svmpredict_exe = r"c:\libsvm-2.88\windows\svm-predict.exe"gnuplot_exe = r"c:\gnuplot\bin\pgnuplot.exe"grid_py = r"c:\libsvm-2.88\python\grid.py"②点中grid.py在右键中选Edit with IDLE打开,将else下面的路径修改如下: else:# example for windowssvmtrain_exe = r"c:\libsvm-2.91\windows\svm-train.exe"gnuplot_exe = r"c:\gnuplot\bin\pgnuplot.exe"三、实验步骤(1)按照LIBSVM软件包所要求的格式准备数据集;(2)对数据进行缩放操作;(3)选用适当的核函数;(4)采用交叉验证选择惩罚系数C与g的最佳参数;(5)采用获得的最佳参数对整个训练集进行训练获取支持向量机模型;(6)利用获取的模型进行测试与预测。
mllib编程方法的实验收获

一、概述最近,本人进行了一些mllib编程方法的实验研究,通过这些研究,我收获颇丰,特在此共享我的收获和心得体会。
二、实验方法在实验中,我主要采用了以下几种mllib编程方法进行研究:1. SVM(支持向量机):通过使用C-SVC和nu-SVC等不同的核函数和参数设置,探索不同的分类效果。
2. 随机森林(Random forest):调整树木的数量、树深度等参数,比较不同参数设置对分类性能的影响。
3. 逻辑回归(Logistic regression):尝试不同的正则化参数和优化方法,比较不同设置下的分类结果。
4. 神经网络(Neural network):尝试调整隐藏层节点数、学习率等参数,比较不同设置下的收敛效果。
三、实验收获通过实验研究,我得到了以下几方面的收获:1. 对不同mllib编程方法的理解更加深入。
通过实际编程实验,我更加深入地理解了SVM、随机森林、逻辑回归和神经网络这些常见的机器学习方法的原理和实现方式,也了解了它们在不同数据集和场景下的适用性和局限性。
2. 对参数调优的重要性有了更深刻的认识。
在实验中,我发现不同的参数设置对于模型的性能影响非常大,尤其是对于神经网络等复杂模型,合适的参数设置可以显著提升模型的性能。
对于mllib编程方法来说,参数调优是非常重要的一环,需要充分重视和细致调整。
3. 对于实验结果的分析和评估能力有了提升。
在实验过程中,我不仅仅是进行了编程实验,更重要的是对实验结果进行了深入的分析和评估。
我学会了如何通过准确率、召回率、F1值等指标来评估分类模型的性能,并且能够结合实际场景对实验结果进行合理的解释和评价。
四、结论与展望通过本次mllib编程方法的实验研究,我深刻体会到了实验的重要性,实践是检验理论的唯一标准。
在今后的研究工作中,我将进一步巩固对mllib编程方法的理解,继续深入研究参数调优、模型评估等关键技术,并将这些技术运用到实际的数据分析和挖掘任务中,为解决实际问题提供更加有效的模型和方法。
关于libsvm分类结果的可视化及分类曲线的可视化

关于libsvm分类结果的可视化及分类曲线的可视化关于libsvvm分类结果的可视化及分类曲线的可视化by faruto论坛里曾有多位朋友询问过,有关libsvvm分类结果的可视化及分类曲线的可视化(可能大家感觉这个放在自己的paper里面会比较拉风,个人感觉可视化这些东西真的很虚幻,看着拉风,实则无用)。
整体过程我心中明了,但实在是对可视化这种东西的鄙视,所以一直未将关于libsvm分类结果的可视化及分类曲线的可视化的结果实现,并以插件函数的形式放在自己的faruto -libsvm工具箱里面。
本质其实就是用contour来实现。
今天下午把科学社会主义理论翘掉了【我还记得代课老师说让大家查看一下科学社会主义理论和空想社会主义的区别。
囧!】。
在宿舍搞了一下。
原本想法是要搞就搞高级一点的,想把对于任意维的测试数据的任意两维(或任意三维)进行可视化,并给出分类超曲面,但最终未果,无法实现。
【具体原因我就不说了,深入想过这个的应该会明的。
】【搞的我从下午一直搞到晚上六点,晚饭都没吃,就直接去上的《概率论的数学基础》课。
囧!】你别看代码就几行。
但里面的想法挺巧妙的。
所以,我在这里要说的是,下面的函数插件 svmplot.m 只对两分类,且属性数据是两维的,给出的分类结果的可视化及分类曲线的可视化才是有意义和准确的。
对于不是两分类或属性数据不是两维的,我这个也可以给出个图,但那个的没有实际意义!切记!!切记!!{近期还想弄的就是专门对于 un-balanced data的处理的函数插件。
!}测试图:代码:要的直接拿去【拿去在paper里面拉风吧!】。
放在libsvm -faruto版本里面就能直接用。
复制内容到剪贴板代码:function svmplot(labels,dataset,model,demension1,demension2)% svmplot by faruto% 2009.12.03%Email:*************************:516667408if nargin == 3demension1 = 1;demension2 = 2;end%%minX = min(dataset(:, demension1));maxX = max(dataset(:, demension1));minY = min(dataset(:, demension2));maxY = max(dataset(:, demension2));gridX = (maxX - minX) ./ 100;gridY = (maxY - minY) ./ 100;minX = minX - 10 * gridX;maxX = maxX + 10 * gridX;minY = minY - 10 * gridY;maxY = maxY + 10 * gridY;[bigX, bigY] = meshgrid(minX:gridX:maxX, minY:gridY:maxY);%%model.Parameters(1) = 3;ntest=size(bigX, 1) * size(bigX, 2);test_dataset=[reshape(bigX, ntest, 1), reshape(bigY, ntest, 1)]; test_label = zeros(size(test_dataset,1), 1);[Z, acc] = svmpredict(test_label, test_dataset, model);bigZ = reshape(Z, size(bigX, 1), size(bigX, 2));%%clf;hold on;grid on;ispos = ( labels == labels(1) );pos = find(ispos);neg = find(~ispos);h1 = plot(dataset(pos, demension1), dataset(pos, demension2), 'r+'); h2 = plot(dataset(neg, demension1), dataset(neg, demension2), 'g*'); h3 = plot( model.SVs(:,demension1),model.SVs(:,demension2),'o' ); legend([h1,h2,h3],'class1','class2','Support Vectors');[C,h] = contour(bigX, bigY, bigZ,-1:0.5:1);clabel(C,h,'Color','r');xlabel('demension1','FontSize',12);ylabel('demension2','FontSize',12);title('The visualization of classification','FontSize',12);代码的有一个小trick是参照了svmtoy 的思路。
Libsvm分类实验报告

一、LIBSVM介绍LIBSVM是台湾大学林智仁(Chih-Jen Lin)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件还有一个特点,就是对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数就可以解决很多问题;并且提供了交互检验(Cross Validation)的功能。
二、准备工作2.1软件下载安装使用的平台是Windows XP,从命令列执行。
先把一些需要的东西装好,总共需要三个软件:libsvm, python, gnuplot。
这里我选择的版本是libsvm-2.88,python26。
Libsvm:到.tw/~cjlin/libsvm/下载libsvm,然后解压缩就好了。
Python:到/download/下载完直接安装就好了。
Gnuplot:下载ftp:///pub/gnuplot/gp400win32.zip解压缩。
这里全部解压安装在c盘c:\libsvm-2.88c:\python26c:\gnuplot2.2参数修改(1)把c:\libsvm-2.88\tools中的easy.py和grid.py复制到c:\libsvm-2.91\python中(2)在c:\libsvm-2.88\python中修改easy.py和grid.py的路径:①点中easy.py在右键中选Edit with IDLE打开,将else下面的路径修改如下:else:# example for windowssvmscale_exe = r"c:\libsvm-2.88\windows\svm-scale.exe"svmtrain_exe = r"c:\libsvm-2.88\windows\svm-train.exe"svmpredict_exe = r"c:\libsvm-2.88\windows\svm-predict.exe"gnuplot_exe = r"c:\gnuplot\bin\pgnuplot.exe"grid_py = r"c:\libsvm-2.88\python\grid.py"②点中grid.py在右键中选Edit with IDLE打开,将else下面的路径修改如下: else:# example for windowssvmtrain_exe = r"c:\libsvm-2.91\windows\svm-train.exe"gnuplot_exe = r"c:\gnuplot\bin\pgnuplot.exe"三、实验步骤(1)按照LIBSVM软件包所要求的格式准备数据集;(2)对数据进行缩放操作;(3)选用适当的核函数;(4)采用交叉验证选择惩罚系数C与g的最佳参数;(5)采用获得的最佳参数对整个训练集进行训练获取支持向量机模型;(6)利用获取的模型进行测试与预测。
Linux 的LIBSVM

Linux下使用Libsvm最近在自己的笔记本上安装Ubuntu,感叹现在的Linux技术发展太快了,许多操作已经跟Windows没有差别,许多Windows下的应用软件都有对应的Linux版本。
应该说使用Ubuntu 相当的方便。
于是将自己的工作平台改为Ubuntu。
改动为Ubuntu平台,我需要安装几个应用软件,主要是我自己工作需要MATLAB和LIBSVM。
下面就将自己在安装这两个软件过程中出现的问题和一些经验写下来。
一来是方便自己以后参考,另外就是给他人提供一个参考。
这篇文章先讲在Ubuntu平台上怎么安装和使用Libsvm(我下载对版本是2.91)。
1、下载:先到.tw/~cjlin/libsvm/下载Linux下对版本tar.gz 。
2、解压缩:解压缩到任一目录下,这里我解压到/home/xxxxxx/libsvm-2.91。
/home/xxxxxx/是我的用户目录,xxxxxx是用户名。
3、编译:进入到/home/xxxxxx/libsvm-2.91,输入命令make(即可完成安装,但有时候会出现下列错误)g++ -Wall -Wconversion -O3 -fPIC -c svm.cppmake: g++: Command not foundmake: *** [svm.o] Error 1274、错误解决:此错误为没有对应编译器,需要安装。
5、安装g++编译器:在终端输入命令apt-get install g++6、再编译:安装g++成功后,即可再编译,编译成功即可用libsvm7、Libsvm使用A.使用svm-train训练:在终端中输入./svm-train heart_scaleB.使用svm-predict预测:在终端输入./svm-predict heart_scale heart_scale.model outheart_scale为test file, heart_scale.model是由svm-train训练出来对模型文件,out为预测输出文件。
libsvm的使用

libsvm的使用发表于2012 年8 月 2 日1: 了解libsvm工具包LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等2001年开发设计的一个简单, 易于使用和快速有效的SVM模式识别与回归的软件包, 他不但提供了编译好的可在Windows系列系统的执行文件, 还提供了源代码, 方便改进, 修改以及在其它操作系统上应用; 该软件对SVM所涉及的参数调节相对比较少, 提供了很多的默认参数, 利用这些默认参数可以解决很多问题; 并提供了交互检验(Cross Validation)的功能. 该软件包可在.tw/~cjlin/ 免费获得. 该软件可以解决C-SVM, ν-SVM, ε-SVR和ν-SVR等问题, 包括基于一对一算法的多类模式识别问题.这套库可以从.tw/~cjlin/libsvm/index.html免费获得, 目前已经发展到3.12版(2012.4.1更新).下载.tar.gz格式的版本, Windows下也可以直接解压, 主要有6个文件夹和一些源码文件.Java: 主要是应用于java平台;matlab: windows下64位matlab平台;python: 是用来参数优选的工具, 稍后介绍;svm-toy: 一个可视化的工具, 用来展示训练数据和分类界面, 里面是源码, 其编译后的程序在windows文件夹下;tools: 主要包含四个python文件, 用来数据集抽样(subset), 参数优选(grid), 集成测试(easy), 数据检查(checkdata);windows: 包含libSVM四个exe程序包, 我们所用的库就是他们.文件夹里面还有个heart_scale, 是一个样本文件, 可以用记事本打开, 用来测试用的.其他.h和.cpp文件都是程序的源码, 可以编译出相应的.exe文件. 其中, 最重要的是svm.h和svm.cpp文件, svm-predict.c, svm-scale.c和svm-train.c(还有一个svm-toy.c 在svm-toy文件夹中)都是调用的这个文件中的接口函数, 编译后就是windows下相应的四个exe程序. 另外, 里面的README跟FAQ也是很好的文件, 对于初学者如果W文较好的话, 可以看一下.对于仅仅使用libsvm库的人来说, windows下的4个exe包已经足够了, 如果是为了做深入研究, 可以按照自己的思路文件夹中的.cpp和.c文件, 然后编译验证)2: 下面开始测试libsvm工具包1). 把LibSVM包解压到相应的目录(因为我只需要里面windows文件夹中的exe程序包, 我们也可以只把windows文件夹拷到相应的目录), 比如C:\jacoxu\test\libsvm-3.122). 在电脑”开始”的”运行”中输入cmd, 进入DOS环境. 定位到C:\jacoxu\test\libsvm-3.12下, 具体命令如下:3). 进行libsvm训练, 输入命令:svm-train ../heart_scale train.modelheart_scale: 是目录下的已经存在的样本文件, 要换成自己的文件, 只需改成自己的文件名就可以了;train.model: 是创建的结果文件, 保存了训练后的结果:其中, #iter 为迭代次数;nu 是选择的核函数类型的参数;obj 为SVM文件转换为的二次规划求解得到的最小值;rho 为判决函数的偏置项b;nSV 为标准支持向量个数(0<a[i]<c);nBSV 为边界上的支持向量个数(a[i]=c);Total nSV为支持向量总个数(对于两类来说, 因为只有一个分类模型Total nSV = nSV但是对于多类, 这个是各个分类模型的nSV之和).在目录下, 还可以看到产生了一个train.model文件, 可以用记事本打开, 记录了训练后的结果.4.nr_class 2 //类别数, 此处为两分类问题5.total_sv 132 //支持向量总个数6.rho 0.424462 //判决函数的偏置项bbel 1 -1 //原始文件中的类别标识8.nr_sv 64 68 //每个类的支持向量机的个数9.SV //以下为各个类的权系数及相应的支持向量10. 1 1:0.166667 2:1 3:-0.333333 … 10:-0.903226 11:-1 12:-1 13:111.0.5104832128985164 1:0.125 2:1 3:0.333333 … 10:-0.806452 12:-0.333333 13:0.512.………13.-1 1:-0.375 2:1 3:-0.333333…. 10:-1 11:-1 12:-1 13:114.-1 1:0.166667 2:1 3:1 …. 10:-0.870968 12:-1 13:0.5这里注意, 第二行出现的权系数为小数(0.5104832128985164)是因为这个点属于非边界上的支持向量, 即: (0<a[i]<c).其他的两个(svm-predict, svm-scale)的使用过程类似.3: libsvm使用规范1). libSVM的数据格式Label 1: value 2:value ….Label: 是类别的标识, 比如上节train.model中提到的1 -1, 你可以自己随意定, 比如-10, 0, 15. 当然, 如果是回归, 这是目标值, 就要实事求是了.Value: 就是要训练的数据, 从分类的角度来说就是特征值, 数据之间用空格隔开.比如: -15 1:0.708 2:1056 3:-0.3333需要注意的是, 如果特征值为0, 特征冒号前面的(姑且称做序号)可以不连续. 如: -15 1:0.708 3:-0.3333表明第2个特征值为0, 从编程的角度来说, 这样做可以减少内存的使用, 并提高做矩阵内积时的运算速度. 我们平时在matlab中产生的数据都是没有序号的常规矩阵, 所以为了方便最好编一个程序进行转化.2). svmscale的用法svmscale是用来对原始样本进行缩放的, 范围可以自己定, 一般是[0,1]或[-1,1]. 缩放的目的主要是1) 防止某个特征过大或过小, 从而在训练中起的作用不平衡;2) 为了计算速度. 因为在核计算中, 会用到内积运算或exp运算, 不平衡的数据可能造成计算困难.用法: svmscale [-l lower] [-u upper][-y y_lower y_upper][-s save_filename][-r restore_filename] filename其中, []中都是可选项:-l: 设定数据下限; lower: 设定的数据下限值, 缺省为-1-u: 设定数据上限; upper: 设定的数据上限值, 缺省为1-y: 是否对目标值同时进行缩放; y_lower为下限值, y_upper为上限值;-s save_filename: 表示将缩放的规则保存为文件save_filename;-r restore_filename: 表示将按照已经存在的规则文件restore_filename进行缩放;filename: 待缩放的数据文件, 文件格式按照libsvm格式.默认情况下, 只需要输入要缩放的文件名就可以了: 比如(已经存在的文件为test.txt) svmscale test.txt这时, test.txt中的数据已经变成[-1,1]之间的数据了. 但是, 这样原来的数据就被覆盖了, 为了让规划好的数据另存为其他的文件, 我们用一dos的重定向符>来另存为(假设为out.txt):svmscale test.txt > out.txt运行后, 我们就可以看到目录下多了一个out.txt文件, 那就是规范后的数据. 假如, 我们想设定数据范围[0,1], 并把规则保存为test.range文件:svmscale –l 0 –u 1 –s test.range test.txt > out.txt这时, 目录下又多了一个test.range文件, 可以用记事本打开, 下次就可以用-r test.range来载入了.3). svmtrain的用法svmtrain我们在前面已经接触过, 他主要实现对训练数据集的训练, 并可以获得SVM模型.用法: svmtrain [options] training_set_file [model_file]其中, options为操作参数, 可用的选项即表示的涵义如下所示:-s 设置svm类型:0 – C-SVC1 – v-SVC2 – one-class-SVM3 –ε-SVR4 – n – SVR-t 设置核函数类型, 默认值为20 —线性核: μ‘∗νμ‘∗ν1 —多项式核: (γ∗μ‘∗ν+coef0)degree(γ∗μ‘∗ν+coef0)degree2 — RBF核: exp(–γ∗∥μ−ν∥2)exp(–γ∗∥μ−ν∥2)3 — sigmoid 核: tanh(γ∗μ‘∗ν+coef0)tanh(γ∗μ‘∗ν+coef0)-d degree: 核函数中的degree设置(针对多项式核函数)(默认3);-g r(gama): 核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/ 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;-b 概率估计: 是否计算SVC或SVR的概率估计, 可选值0或1, 默认0;model_file: 可选项, 为要保存的结果文件, 称为模型文件, 以便在预测时使用.其中-g选项中的k是指输入数据中的属性数. option -v 随机地将数据剖分为n部分并计算交互检验准确度和均方根误差. 以上这些参数设置可以按照SVM的类型和核函数所支持的参数进行任意组合, 如果设置的参数在函数或SVM类型中没有也不会产生影响, 程序不会接受该参数; 如果应有的参数设置不正确, 参数将采用默认值.training_set_file是要进行训练的数据集; model_file是训练结束后产生的模型文件, 文件中包括支持向量样本数, 支持向量样本以及lagrange系数等必须的参数; 该参数如果不设置将采用默认的文件名, 也可以设置成自己惯用的文件名.默认情况下, 只需要给函数提供一个样本文件名就可以了, 但为了能保存结果, 还是要提供一个结果文件名, 比如: test.model, 则命令为:svmtrain test.txt test.model4). svmpredict 的用法svmpredict 是根据训练获得的模型, 对数据集合进行预测.用法: svmpredict [options] test_file model_file output_file其中, options为操作参数, 可用的选项即表示的涵义如下所示:-b probability_estimates: 是否需要进行概率估计预测, 可选值为0 或者1, 默认值为0.model_file: 是由svmtrain 产生的模型文件;test_file: 是要进行预测的数据文件, 格式也要符合libsvm格式, 即使不知道label的值, 也要任意填一个, svmpredict会在output_file中给出正确的label结果, 如果知道label的值, 就会输出正确率;output_file: 是svmpredict 的输出文件, 表示预测的结果值。
SVM多分类问题libsvm在matlab中的应用

SVM多分类问题libsvm在matlab中的应⽤转载⾃对于⽀持向量机,其是⼀个⼆类分类器,但是对于多分类,SVM也可以实现。
主要⽅法就是训练多个⼆类分类器。
⼀、多分类⽅式1、⼀对所有(One-Versus-All OVA)给定m个类,需要训练m个⼆类分类器。
其中的分类器 i 是将 i 类数据设置为类1(正类),其它所有m-1个i类以外的类共同设置为类2(负类),这样,针对每⼀个类都需要训练⼀个⼆类分类器,最后,我们⼀共有 m 个分类器。
对于⼀个需要分类的数据 x,将使⽤投票的⽅式来确定x的类别。
⽐如分类器 i 对数据 x 进⾏预测,如果获得的是正类结果,就说明⽤分类器 i 对 x 进⾏分类的结果是: x 属于 i 类,那么,类i获得⼀票。
如果获得的是负类结果,那说明 x 属于 i 类以外的其他类,那么,除 i 以外的每个类都获得⼀票。
最后统计得票最多的类,将是x的类属性。
2、所有对所有(All-Versus-All AVA)给定m个类,对m个类中的每两个类都训练⼀个分类器,总共的⼆类分类器个数为 m(m-1)/2 .⽐如有三个类,1,2,3,那么需要有三个分类器,分别是针对:1和2类,1和3类,2和3类。
对于⼀个需要分类的数据x,它需要经过所有分类器的预测,也同样使⽤投票的⽅式来决定x最终的类属性。
但是,此⽅法与”⼀对所有”⽅法相⽐,需要的分类器较多,并且因为在分类预测时,可能存在多个类票数相同的情况,从⽽使得数据x属于多个类别,影响分类精度。
对于多分类在matlab中的实现来说,matlab⾃带的svm分类函数只能使⽤函数实现⼆分类,多分类问题不能直接解决,需要根据上⾯提到的多分类的⽅法,⾃⼰实现。
虽然matlab⾃带的函数不能直接解决多酚类问题,但是我们可以应⽤libsvm⼯具包。
libsvm⼯具包采⽤第⼆种“多对多”的⽅法来直接实现多分类,可以解决的分类问题(包括C- SVC、n - SVC )、回归问题(包括e - SVR、n - SVR )以及分布估计(one-class-SVM )等,并提供了线性、多项式、径向基和S形函数四种常⽤的核函数供选择。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Libsvm调参使用的心得体会
Libsvm是台湾大学教授林志仁开发的SVM包,主要运用SVM来求解分类问题。
SVM的模型主要取决于两个参数:C和g,C代表惩罚因子,C越大,就说明松弛变量越小,在训练集上允许错分的样本就越少,就约会产生过拟合问题,反之同理。
g是核函数的参数,暂时没有什么调参经验。
调参可以用python脚本即可。
在下载的libsvm文件中,找到tools文件夹,找到grid.py 函数,只要用命令python grid.py file即可。
file是你要用训练集,格式和训练集一样,存放的路径和grid.py一样。
其中还要在grid.py中改两个路径,一个是输出图像的gnuplot,其实这个不修改也没有关系,那程序就不会运行出图像结果。
第2个是trainSVM的路径,就是这个libsvm/window/svm-train.exe文件。
不同的人,前面还要加上不同的路径。
在window 中的dos环境下运行这个命令,就可以得出结果。
最后的就是输出结果,也就是最佳参数。