如何使用libsvm进行分类
2个回答
展开全部
其实使用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表示有两个类别:男生、女生)。
二、有了上面的属性矩阵data,和标签label就可以利用libsvm建立分类模型了,简要代码如下:
model = svmtrain(label,data);
复制代码
有了model就可以做分类预测,比如此时该班级又转来一个新学生,其
身高190cm,体重85kg
想通过上面这些信息就给出其标签(想知道其是男【1】还是女【-1】)
比如 令 testdata = [190 85]; 由于其标签不知道,假设其标签为-1(也可以假设为1)
即
testdatalabel = -1;
然后利用libsvm来预测这个新来的学生是男生还是女生,代码如下:
[predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model)
复制代码
下面整体运行一下上面这段的背景数据和代码:
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、男生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表示有两个类别:男生、女生)。
二、有了上面的属性矩阵data,和标签label就可以利用libsvm建立分类模型了,简要代码如下:
model = svmtrain(label,data);
复制代码
有了model就可以做分类预测,比如此时该班级又转来一个新学生,其
身高190cm,体重85kg
想通过上面这些信息就给出其标签(想知道其是男【1】还是女【-1】)
比如 令 testdata = [190 85]; 由于其标签不知道,假设其标签为-1(也可以假设为1)
即
testdatalabel = -1;
然后利用libsvm来预测这个新来的学生是男生还是女生,代码如下:
[predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model)
复制代码
下面整体运行一下上面这段的背景数据和代码:
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 =
微测检测5.10
2023-05-10 广告
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
展开全部
%% HowToClassifyUsingLibsvm
% by faruto @ faruto's Studio~
% http://blog.sina.com.cn/faruto
% Email:faruto@163.com
% 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.
>>
% by faruto @ faruto's Studio~
% http://blog.sina.com.cn/faruto
% Email:faruto@163.com
% 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.
>>
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询