資源簡介
這個代碼是運行好的,拿來就可用。編寫簡潔易懂

代碼片段和文件信息
function?[Crate]?=?SVMK(XYCdelta_kXtestYtest)
%??X??一訓練樣本
%??Y??一訓練樣本類別
%??C??一?懲罰系數(shù)
%?delta_k??一高斯核函數(shù)參數(shù)
%??Xtest??一?正測試樣本
%??Ytest??一負測試樣本
[ndim]?=?size(X);
%?H?=?zeros(nn);
%?for?i?=?1:n
%?????for?j=?1:n
%?????????H(ij)?=?Y(i1)*Y(j1)*kernel(X(i:)X(j:)kerType)?;%X(i:)*X(j:)‘;
%?????end
%?end??%Dij?=?YiYjK(XiXj)
H?=?(Y*Y‘).*exp(-delta_k^2*(dist(XX‘).^2));%kernel(XXkerType);%?kerType為linear或rbf
f?=?-ones(n1);
A?=?[];
b?=?[];
Aeq?=?Y‘;
beq?=?0;
lb?=?zeros(n1);?%?alphas?>?=?0
ub?=?C*ones(n1);?%?alphas?=?C
x0?=?zeros(n1);?%?賦初值[00...0]
options?=?optimset;????%?Options是用來控制算法的選項參數(shù)的向量
options.LargeScale?=?‘off‘;
options.Display?=?‘off‘;
[xfvalexitflag]?=?quadprog(HfAbAeqbeqlbubx0options);??%?調(diào)用quadprog函數(shù)
a?=?x;
epsilon?=?1e-8;?
%display(a);
sv_label?=?find(abs(a)>epsilon);??%0a?=?a(sv_label);
Xsv?=?X(sv_label:);
Ysv?=?Y(sv_label);
num?=?length(Ysv);
%?%%?求w?????
%?W?=?zeros(1dim);
%?for?i?=?1:num
%?????W?=?W+?a(i1)*Ysv(i)*Xsv(i:);
%?end
%%?求b?
b=(1/num)*sum(Ysv?-?sum((Ysv*a‘).*exp(-delta_k^2*(dist(XsvXsv‘).^2))2));
%%?預測
%%正樣本預測
Ptest_n?=?size(Xtest1);
PS?=?sign(exp(-delta_k^2*(dist(XtestXsv‘).^2))*(a.*Ysv)+b*ones(Ptest_n1));??%計算+b的符號
Pc_num?=?length(find(PS==1));??%正樣本中判斷正確的樣本個數(shù)
Pf_num?=?length(find(PS==-1));??%正樣本中判斷錯誤的樣本個數(shù)
%%負樣本預測
Ntest_n?=?size(Ytest1);
NS?=?sign(exp(-delta_k^2*(dist(YtestXsv‘).^2))*(a.*Ysv)+b*ones(Ptest_n1));??%計算+b的符號
Nc_num?=?length(find(NS==-1));??%正樣本中判斷正確的樣本個數(shù)
Nf_num?=?length(find(NS==1));??%正樣本中判斷錯誤的樣本個數(shù)
%%正確率
Crate?=?(Pc_num+Nc_num)/(Pc_num+Pf_num+Nc_num+Nf_num);
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1809??2014-11-21?11:56??SVMK.m
?????文件????????1667??2014-11-21?11:59??SVML.m
- 上一篇:人臉表情識別MATLAB
- 下一篇:圓陣方向圖
評論
共有 條評論