MATLAB fitcSVM权重向量

时间:2018-07-06 14:31:22

标签: matlab machine-learning classification svm pattern-recognition

我正在用MATLAB中的fitcsvm函数训练线性SVM分类器:

     cvFolds = crossvalind('Kfold', labels, nrFolds);

          for i = 1:nrFolds                       % iterate through each fold

              testIdx = (cvFolds == i);            % indices of test instances
              trainIdx = ~testIdx;                 % indices training instances

              cl = fitcsvm(features(trainIdx,:), 
              labels(trainIdx),'KernelFunction',kernel,'Standardize',true,...
             'BoxConstraint',C,'ClassNames',[0,1], 'Solver', solver);

              [labelPred,scores] =  predict(cl, features(testIdx,:));
              eq = sum(labelPred==labels(testIdx));
              accuracy(i) = eq/numel(labels(testIdx));

          end

从这部分代码中可以看到,训练后的SVM模型存储在cl中。检查cl中的模型参数,我看不到哪个参数对应于分类器权重-即。线性分类器的参数,它反映每个功能的重要性。 哪个参数代表分类权?我在MATLAB documentation中看到“向量β包含定义到超平面的正交向量的系数”,因此cl.beta代表分类权吗?

1 个答案:

答案 0 :(得分:2)

如您在此documentation中所见,hyperplanefitcsvm的等式为

                                 f(x)=x′β+b=0

您知道,该等式显示以下关系:

                                 f(x)=w*x+b=0 or f(x)=x*w+b=0

所以,β等于w(权重)。