svm(支持向量机)简单版本

网上最好的讲解版本,我觉得是这个https://blog.csdn.net/v_july_v/article/details/7624837
从推导到说明都很完整。
基于此篇博客和其他资料,我自己推导了简单版本,没有涉及最优化计算和证明,在此记录,此后再有重要知识点还会补充到这篇中。
这里写图片描述

在matlab中可以下载libsvm工具箱进行实验,有很多参数可以调节,比如核函数,惩罚系数等等。SVMcg函数可以用来直接寻找c和g的最佳值。思想是不断改变c和g的值,然后将每次的正确率进行存储比较。
函数调用的简单实例如下

CC=cell2mat(C);
traindata=CC(:,1:16);
labeldata=CC(:,17);
% rn=randperm(4521);
% traindata=traindata(rn,:);
% labeldata=labeldata(rn,:);

train=traindata(1:3616,:);
trainlabel=labeldata(1:3616,:);

text=traindata(3617:4521,:);
textlabel=labeldata(3617:4521,:);

model = svmtrain(trainlabel,train,'-s 0 -t 2 -c 3.5 -g 8.9 -v 3');
% [pre,acc,dec] = svmpredict(textlabel,text,model);

% options = optimset('MaxIter',1000);
% [bestacc,bestc,bestg] = SVMcg(trainlabel,train,-15,15,-15,15,3,1,1,1);
% cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
% model = svmtrain(trainlabel,train,cmd);
% [pre,acc,dec] = svmpredict(textlabel,text,model);

猜你喜欢

转载自blog.csdn.net/q199502092010/article/details/82461198