matlab - MATLAB fitcSVM 权重向量
问题描述
我正在使用 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 文档中看到“向量 β 包含定义与超平面正交向量的系数”-因此 cl.beta 代表分类权重吗?
解决方案
正如您在本文档hyperplane
中看到的,a in的等式fitcsvm
是
f(x)=x′β+b=0
如您所知,该等式显示以下关系:
f(x)=w*x+b=0 or f(x)=x*w+b=0
因此,β 等于 w(权重)。
推荐阅读
- tableau-api - 如何使用 Tableau Desktop 自动构建和保存图形?
- r - 按月和年连续观察
- postgresql - Postgres 数据库文件如何更新?
- linux - 如何找到单词在字符串中的位置?
- json - 使用python将CSV数据导入MongoDB
- c# - 在 MVVM 中,如何区分视图模型的用户更改和系统更改?
- c++ - reading string text input to create a 2D Vector
- angular - 如何在Angular4中解决运行时的依赖关系
- mysql - MYSQL - 使用复合主键从另一个表更新表
- visual-studio-code - 在 vscode tmLanguage 中扩展 markdown