导航:首页 > 五金知识 > libsvm工具箱使用

libsvm工具箱使用

发布时间:2022-02-09 06:41:40

『壹』 如何在Visual Studio2012里使用libsvm工具箱

第一部分:先把 VS 工程的框架建好

第二部分:工程里包含主函数的 cpp 文件要怎么写

第三部分:把 libsvm 工具箱移植到 MFC 中进行使用

第四部分:在本文代码中能够正确运行的数据格式

『贰』 求助,SVM LIBSVM工具箱的使用,帮我完成一个回归预测的文章

我是用LIBSVM做的分类,回归跟分类应该差不多吧。好像就是几个参数不同。不过我不太懂回归是什么含义。

『叁』 libsvm工具箱和lssvm工具箱有什么区别

1、这两个意义完全不一样,lssvm是最小二乘支持向量机,是一种算法 libsvm是一个支持版向量机的工具集合,权一个库;
2、LIBSVM是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;
3、而LSSVM是支持向量机算法的一种改进版本——即最小二乘支持向量机(Least Squares Support Vector Machine)。

『肆』 如何使用libsvm进行分类

这帖子就是初步教教刚接触libsvm(svm)的同学如何利用libsvm进行分类预测,关于参数寻优的问题在这里姑且不谈,另有帖子详述。

其实使用libsvm进行分类很简单,只需要有属性矩阵和标签,然后就可以建立分类模型(model),然后利用得到的这个model进行分类预测了。

那神马是属性矩阵?神马又是标签呢?我举一个直白的不能在直白的例子:
说一个班级里面有两个男生(男生1、男生2),两个女生(女生1、女生2),其中
男生1 身高:176cm 体重:70kg;
男生2 身高:180cm 体重:80kg;

女生1 身高:161cm 体重:45kg;
女生2 身高:163cm 体重:47kg;
如果我们将男生定义为1,女生定义为-1,并将上面的数据放入矩阵data中,即

data = [176 70;

180 80;

161 45;

163 47];

复制代码
在label中存入男女生类别标签(1、-1),即

label = [1;1;-1;-1];

复制代码
这样上面的data矩阵就是一个属性矩阵,行数4代表有4个样本,列数2表示属性有两个,label就是标签(1、-1表示有两个类别:男生、女生)。

Remark:这里有一点废话一些(因为我看到不止一个朋友问我这个相关的问题):
上面我们将男生定义为1,女生定义为-1,那定义成别的有影响吗?
这个肯定没有影响啊!(用脚趾头都能想出来,我不知道为什么也会有人问),这里面的标签定义就是区分开男生和女生,怎么定义都可以的,只要定义成数值型的就可以。
比如我可将将男生定义为2,女生定义为5;后面的label相应为label=[2;2;5;5];
比如我可将将男生定义为18,女生定义为22;后面的label相应为label=[18;18;22;22];

为什么我说这个用脚趾头都能想怎么定义都可以呢?学过数学的应该都会明白,将男生定义为1,女生定义为-1和将男生定义为2,女生定义为5本质是一样的,应为可以找到一个映射将(2,5)转换成(1,-1),so所以本质都是一样的,后面的18、22本质也是一样的。
这里要多说一些,如果你原本的数据集合的标签不是数值型的(比如a、b、c)那么你完全可以通过某种转换映射将不是数值型的标签转换成数值型的。

现在回归正题,有了上面的属性矩阵data,和标签label就可以利用libsvm建立分类模型了,简要代码如下:

model = svmtrain(label,data);

复制代码
有了model我们就可以做分类预测,比如此时该班级又转来一个新学生,其
身高190cm,体重85kg
我们想通过上面这些信息就给出其标签(想知道其是男【1】还是女【-1】)
比如 令 testdata = [190 85]; 由于其标签我们不知道,我们假设其标签为-1(也可以假设为1)
Remark:这里又有一点废话一些(因为我看到不止一个朋友问我这个相关的问题):
如果测试集合的标签没有怎么办?测试集合的标签就应该没有,否则测试集合的标签都有了,还预测你妹啊!?没有是正确的,就像上面一样,新来的学生其标签咱不应知道,就想通过其属性矩阵来预测其标签,这才是预测分类的真正目的。
之所以平时做测试时,测试集合的标签一般都有,那是因为一般人们想要看看自己的分类器的效果如何,效果的评价指标之一就是分类预测的准确率,这就需要有测试集的本来的真实的标签来进行分类预测准确率的计算。

话归正传,即
testdatalabel = -1;

然后利用libsvm来预测这个新来的学生是男生还是女生,代码如下:

[predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model)

复制代码
下面我们整体运行一下上面这段恶 搞[e gao]的背景数据和代码(你别笑,这个是真能运行的,也有结果的):

data = [176 70;

180 80;

161 45;

163 47];

label = [1;1;-1;-1];

model = svmtrain(label,data);

testdata = [190 85];

testdatalabel = -1;

[predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model);

predictlabel

复制代码
运行结果如下:

Accuracy = 0% (0/1) (classification)

predictlabel =

1

复制代码
哎,我们看到,通过预测我们得知这个新来的学生的标签是1(男生),由于原本我们假设其标签为-1,假设错误,所以分类准确率为0%。

好,通过上面的讲解,不知道诸位看官对于利用libsvm进行分类是否有了一定了解【谁要是这么通俗的例子还搞不清楚怎么使用libsvm进行分类,那我真无语啦】,下面使用libsvm工具箱本身带的测试数据heart_scale来实际进行一下测试:
%% HowToClassifyUsingLibsvm

% by faruto @ faruto's Studio~

% http://blog.sina.com.cn/faruto

% Email:[email protected]

% http://www.MATLABsky.com

% http://www.mfun.la

% http://video.ourmatlab.com

% last modified by 2010.12.27

%% a litte clean work

tic;

close all;

clear;

clc;

format compact;

%%

% 首先载入数据

load heart_scale;

data = heart_scale_inst;

label = heart_scale_label;

% 选取前200个数据作为训练集合,后70个数据作为测试集合

ind = 200;

traindata = data(1:ind,:);

trainlabel = label(1:ind,:);

testdata = data(ind+1:end,:);

testlabel = label(ind+1:end,:);

% 利用训练集合建立分类模型

model = svmtrain(trainlabel,traindata,'-s 0 -t 2 -c 1.2 -g 2.8');

% 分类模型model解密

model

Parameters = model.Parameters

Label = model.Label

nr_class = model.nr_class

totalSV = model.totalSV

nSV = model.nSV

% 利用建立的模型看其在训练集合上的分类效果

[ptrain,acctrain] = svmpredict(trainlabel,traindata,model);

% 预测测试集合标签

[ptest,acctest] = svmpredict(testlabel,testdata,model);

%%

toc;

复制代码
运行结果:

model =

Parameters: [5x1 double]

nr_class: 2

totalSV: 197

rho: 0.0583

Label: [2x1 double]

ProbA: []

ProbB: []

nSV: [2x1 double]

sv_coef: [197x1 double]

SVs: [197x13 double]

Parameters =

0

2.0000

3.0000

2.8000

0

Label =

1

-1

nr_class =

2

totalSV =

197

nSV =

89

108

Accuracy = 99.5% (199/200) (classification)

Accuracy = 68.5714% (48/70) (classification)

Elapsed time is 0.040873 seconds.

>>

『伍』 matlab r2014a怎样安装libsvm工具箱

1.设置路径:用Add with Subfolders添加目录(将工具箱所在文件夹的子目录也添加到MATLAB工作搜索目录)
2.选择编回译器答:mex -setup(mex后面有空格)
3.编译:make(要把MATLAB当前目录调整到libsvm工具箱所在文件夹)双击make.m文件
PS:运行help train得到的是MATLAB自带的svmtrain函数的帮助文件
运行help svmpredict会有报错:svmpredict not found
工具箱中的README稳健可以算是帮助文件
table键对函数进行补全!

『陆』 matlab安装libsvm工具箱

遇到了同样的问题 测试也没有问题 调用的时候出现上面两个报错

『柒』 求在MATLAB下编译好(可以直接使用)的libsvm工具箱

以下两种方法,我已经亲测可用
方法1:可以在其他朋友的电脑上进行编译,编译完后直接把libsvmread.mexw64、libsvmwrite.mexw64、svmpredict.mexw64、svmtrain.mexw64复制到你自己的程序中即可运行。这种方法的弊端是不同的算法程序中均需要复制一次。

方法2:把编译完后的libsvmread.mexw64、libsvmwrite.mexw64、svmpredict.mexw64、svmtrain.mexw64这几个文件添加到F:\MATLAB 2015a anzhuang\toolbox\libsvm-3.22\matlab下,即可

『捌』 在使用libsvm工具箱做分类时,函数svmtrain中的参数’-b 1‘是什么意思

看到没有答案,特来为后来人铺路。

-b参数用于输出概率估计模型,其附带的概率估计输内出在分类问题上可用容于画ROC曲线

需要注意,'-b 0' 用于SVC也就是分类问题
'-b 1'用于SVR也就是回归问题

这里概率模型的准确率比直接输出类别的模型的准确率存在差别的原因是因为参数错了。

『玖』 怎么用MATLAB下的libsvm工具箱画最优分类面

只有线性可分的2维情况,才能画出可视化图。 高维无法可视化 线性不可分的,由于已经映射到高维空间,而且是采用核函数,本身的映射函数不可知,所以在原空间中无法画出最优分类超平面。 但通过核函数映射后在 高维空间中的分类超平面的方程可知。

『拾』 怎么安装libsvm工具箱

你的和我的情况一模一样。

我折腾了两天最后解决了。
因为matlab软件是在win XP是弄得,后回来升级的win7最多支持到vista,所以答直接安装不行。
我在装的时候,可以安装,但是打不开,后来发现,只要安装完之后再matlab的快捷方式下点击右键,在兼容性下面点击window XP下就可以了。卸载的时候也不能卸,需要找到uninstall.exe这个文件,同样在兼容性下面点击window XP下就可以了。如果你连安装都不能的话,那么就就在install.exe中点击右键,兼容性下面选择window XP,然后确定,就一切OK了。

阅读全文

与libsvm工具箱使用相关的资料

热点内容
常规年检防雷装置检测报告 浏览:177
砂型铸造是怎么回事 浏览:333
水龙头翻砂铸造是什么意思 浏览:475
深圳观澜国泰五金制品 浏览:562
粉碎机械选型应考虑哪些因素 浏览:974
华丰设备比作业员工资高多少钱 浏览:903
河北进口圆锥滚子轴承什么价格 浏览:595
木材含水测定仪用什么仪器来校准 浏览:360
怎么查制冷操作证 浏览:397
阀门上bs代表什么 浏览:561
教你怎么解决微信解冻提示设备不一致的问题 浏览:483
机械表买什么 浏览:864
江苏扬中市阀门厂有限公司 浏览:613
9米6欧曼货车贯通轴承怎么装 浏览:837
是起重机械的超载保护装置 浏览:402
机械白金机电容最好用多少uf 浏览:911
气动阀门由什么组成 浏览:418
研究传动装置 浏览:882
日产轩逸仪表盘照片如何设置 浏览:650
液压泵检测装置 浏览:292