首页 文章

SVM MATLAB实现错误绘制决策边界

提问于
浏览
0

我试图在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 回答

  • 0

    如果你看MATLAB documentation for fitcsvm,你会发现没有属性 w ,这就是给你错误的东西 .

    您需要自己计算权重 w ,因为MATLAB正在解决SVM的双重形式 . 更多详细信息可以在这里找到 . 如果您想了解更多信息,请查看this reference . 您可以使用以下公式:

    w = zeros( size(x(1,:)) );
    for i=1:N
        w = w + alpha(i)*y(i)*x(i,:);
    end
    

    您可以使用模型中返回的alpha和数据的组合来计算 w 向量 .

相关问题