我试图在MATLAB中进行二进制分类,但下面的代码最后会抛出错误 .
load('ex6data1.mat');
% Plot training data
plotData(X, y);
fprintf('Program paused. Press enter to continue.\n');
pause;
model=fitcsvm(X,y);
visualizeBoundaryLinear(X,y,model); //error shows up here i guess
fprintf('Paused');
Error window
Error using subsref
No appropriate method, property, or field 'w' for class
'ClassificationSVM'.
Error in classreg.learning.internal.DisallowVectorOps/subsref (line
21)
[varargout{1:nargout}] = builtin('subsref',this,s);
Error in visualizeBoundaryLinear (line 7)
w = model.w;
Error in Untitled2 (line 18)
visualizeBoundaryLinear(X,y,model);
注意:正例为Y,负数为-1 .
1 回答
如果你看MATLAB documentation for fitcsvm,你会发现没有属性
w
,这就是给你错误的东西 .您需要自己计算权重
w
,因为MATLAB正在解决SVM的双重形式 . 更多详细信息可以在这里找到 . 如果您想了解更多信息,请查看this reference . 您可以使用以下公式:您可以使用模型中返回的alpha和数据的组合来计算
w
向量 .