onevsalltrain.m

来自「崭新矢量机SVM源码」· M 代码 · 共 39 行

M
39
字号
function [alpha,bias,svi,nsv] = onevsalltrain(samples,labels,kernel,kernelparam,lamda,epsilon,func)

% multiclass classification using one-against-all
% training function

nlabels = max(labels);
bias = [];
k = 1;
nsvvec = zeros(length(samples),1);
for i=1:nlabels
    
    index1 = find(labels == i);
    index2 = 1:length(labels);
    index2 = index2(:);
    index2(index1) = [];
    sublabels(index1,1) = 1;
    sublabels(index2,1) = -1;

    switch func
    case 'fsals_svm'
        tic;
        [subalpha,subsvi,subnsv,subbias] = fsals_svmtrain(samples',sublabels,kernel,kernelparam,lamda,epsilon);
        nsvvec(subsvi) = nsvvec(subsvi)+1;
        fprintf('Support Vectors : %d (%3.1f%%)\n',subnsv,100*subnsv/length(labels));
        fprintf('Execution time : %4.1f seconds\n',toc);
    case 'pfsals_svm'
        tic;
        [subalpha,subsvi,subnsv,subbias] = pfsals_svmtrain(samples',sublabels,kernel,kernelparam,lamda,epsilon);
        nsvvec(subsvi) = nsvvec(subsvi)+1;
        fprintf('Support Vectors : %d (%3.1f%%)\n',subnsv,100*subnsv/length(labels));
        fprintf('Execution time : %4.1f seconds\n',toc);
    end
    
    alpha{i} = subalpha;
    svi{i} = subsvi;
    bias = [bias;subbias];
    i = i+1;
end;
nsv = sum(nsvvec>0);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?