【问题标题】:SVM Visualization in MATLABMATLAB 中的 SVM 可视化
【发布时间】:2011-02-08 14:44:26
【问题描述】:

在 Matlab 中执行 SVM 训练后,如何可视化 SVM 分类?

到目前为止,我只训练了 SVM:

% Labels are -1 or 1
groundTruth = Ytrain;
d = xtrain;

model = svmtrain(groundTruth, d);

【问题讨论】:

    标签: matlab classification svm libsvm pca


    【解决方案1】:

    如果您使用的是 LIBSVM,则可以绘制分类结果:

    % Labels are -1 or 1
    groundTruth = Ytrain;
    d = xtrain;
    
    figure
    
    % plot training data
    hold on;
    pos = find(groundTruth==1);
    scatter(d(pos,1), d(pos,2), 'r')
    pos = find(groundTruth==-1);
    scatter(d(pos,1), d(pos,2), 'b')
    
    % now plot support vectors
    hold on;
    sv = full(model.SVs);
    plot(sv(:,1),sv(:,2),'ko');
    
    % now plot decision area
    [xi,yi] = meshgrid([min(d(:,1)):0.01:max(d(:,1))],[min(d(:,2)):0.01:max(d(:,2))]);
    dd = [xi(:),yi(:)];
    tic;[predicted_label, accuracy, decision_values] = svmpredict(zeros(size(dd,1),1), dd, model);toc
    pos = find(predicted_label==1);
    hold on;
    redcolor = [1 0.8 0.8];
    bluecolor = [0.8 0.8 1];
    h1 = plot(dd(pos,1),dd(pos,2),'s','color',redcolor,'MarkerSize',10,'MarkerEdgeColor',redcolor,'MarkerFaceColor',redcolor);
    pos = find(predicted_label==-1);
    hold on;
    h2 = plot(dd(pos,1),dd(pos,2),'s','color',bluecolor,'MarkerSize',10,'MarkerEdgeColor',bluecolor,'MarkerFaceColor',bluecolor);
    uistack(h1, 'bottom');
    uistack(h2, 'bottom');
    

    【讨论】:

    • dd 是训练数据特征范围的网格。
    【解决方案2】:

    假设您的数据有两个以上的维度,您可以执行 PCA,将数据投影到 2D,然后根据您的 svm 分类器的输出为它们分配颜色(例如,A 类为红色,B 类为蓝色) .这很快就可以做到,您将看到是否有任何可视化的内容。但是,具有高维数的数据不太可能在 2D 中轻松可视化。

    【讨论】:

    • 执行 PCA 是什么意思?我怎么能那样做?请您再解释一下好吗?我想可视化 FisherIris 数据集上的 svm 分类(使用 libsvm)。如果我是对的,它是 4D
    • 说实话,如果您甚至不知道 PCA 是什么(主成分分析的缩写),您最终可能会花费太多时间来获得最终结果。这不是微不足道的。我知道可视化决策边界会很有趣,但您可能需要考虑不同的策略来分析 SVM 的行为。你到底想达到什么目的?
    • 最后我决定使用stprtool 而不是 libsvm 来选择绘制决策边界。它工作得很好。感谢您的回复
    【解决方案3】:

    查看类似于 LIBSVM 中的 svm-toy 函数。显然它只适用于二维二进制分类

    【讨论】:

      【解决方案4】:
      model = svmtrain(groundTruth, d, 'ShowPlot', true);
      

      【讨论】:

        猜你喜欢
        • 2021-01-22
        • 2013-05-17
        • 2016-10-23
        • 2013-10-12
        • 2017-04-21
        • 2014-06-03
        • 1970-01-01
        • 2016-08-07
        • 1970-01-01
        相关资源
        最近更新 更多