我需要一个某种描述性的例子,展示如何对两类数据进行10倍SVM分类.在MATLAB文档中只有一个例子,但它不是10倍.有人能帮我吗?
我知道交叉验证用于选择好的参数.找到它们之后,我需要在不使用-v选项的情况下重新训练整个数据.
但我面临的问题是,在使用-v选项训练后,我获得了交叉验证的准确性(例如85%).没有模型,我看不到C和gamma的值.在那种情况下,我如何重新训练?
顺便说一句,我应用10倍交叉验证.例如
optimization finished, #iter = 138
nu = 0.612233
obj = -90.291046, rho = -0.367013
nSV = 165, nBSV = 128
Total nSV = 165
Cross Validation Accuracy = 98.1273%
Run Code Online (Sandbox Code Playgroud)
需要一些帮助..
为了获得最佳的C和gamma,我使用LIBSVM FAQ中提供的代码
bestcv = 0;
for log2c = -6:10,
for log2g = -6:3,
cmd = ['-v 5 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
cv = svmtrain(TrainLabel,TrainVec, cmd);
if (cv >= bestcv),
bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
end
fprintf('(best c=%g, g=%g, rate=%g)\n',bestc, bestg, …Run Code Online (Sandbox Code Playgroud) 我知道LIBSVM在多类SVM方面只允许一对一分类.但是,我想稍微调整它以执行一对一的分类.我试图在下面进行一对一的比赛.这是正确的方法吗?
代码:
TrainLabel;TrainVec;TestVec;TestLaBel;
u=unique(TrainLabel);
N=length(u);
if(N>2)
itr=1;
classes=0;
while((classes~=1)&&(itr<=length(u)))
c1=(TrainLabel==u(itr));
newClass=c1;
model = svmtrain(TrainLabel, TrainVec, '-c 1 -g 0.00154');
[predict_label, accuracy, dec_values] = svmpredict(TestLabel, TestVec, model);
itr=itr+1;
end
itr=itr-1;
end
Run Code Online (Sandbox Code Playgroud)
我可能犯了一些错误.我想听听一些反馈.谢谢.
第二部分:正如葡萄藤所说:我需要做汇总(或投票作为简化解决方案)来得出最终答案.我不知道该怎么做.我需要一些帮助; 我看到了python文件,但仍然不太确定.我需要一些帮助.
你能举一个在matlab中使用支持向量机(SVM)对4个类进行分类的例子:
atribute_1 atribute_2 atribute_3 atribute_4 class
1 2 3 4 0
1 2 3 5 0
0 2 6 4 1
0 3 3 8 1
7 2 6 4 2
9 1 7 10 3
Run Code Online (Sandbox Code Playgroud) matlab artificial-intelligence classification machine-learning svm
我正在使用libsvm,我必须实现多类的分类,而不是全部.
我该怎么做?2011版本
是否libsvm使用此功能?
我认为我的问题不是很清楚.如果libsvm没有自动使用one,那么我将为每个类使用一个svm,否则我如何在svmtrain函数中定义这个参数.我读过libsvm的自述文件.
如何使用libsvm实现一对一多类分类?请帮我解决这个问题.
我还从这个答案中读到了一对一的方法...... 使用Matlab进行交叉验证的多类SVM的完整示例[关闭]
我的测试数据:功能和最后一列是标签
D = [
1 1 1 1 1
1 1 1 9 1
1 1 1 1 1
11 11 11 11 2
11 11 11 11 2
11 11 11 11 2
30 30 30 30 3
30 30 30 30 3
30 30 30 30 3
60 60 60 60 4
60 60 60 60 4
60 60 60 60 4
];
Run Code Online (Sandbox Code Playgroud)
我的测试数据是
inputTest = [
1 1 1 1
11 11 11 10 …Run Code Online (Sandbox Code Playgroud)