【问题标题】:Plotting the hyperplane of LDA (ClassificationDiscriminant)绘制 LDA 的超平面(ClassificationDiscriminant)
【发布时间】:2013-04-26 23:27:03
【问题描述】:

我正在尝试通过直观地研究分离超平面来比较我的数据上的各种分类器,例如 LDA 和 SVM 等。

目前我使用ClassificationDiscriminant作为LDA分类器,不像SVM可以在图上绘制超平面,我找不到绘制LDA分类器超平面的方法。

以下脚本是我如何生成样本数据并使用 ClassificationDiscriminant 对其进行分类:

%% Data & Label
X = [randn(100,2); randn(150,2) + 1.5];
Y = [zeros(100,1); ones(150,1)];
%% Plot
gscatter(X(:,1),X(:,2),Y);
%% Train LDA Classifier
C = ClassificationDiscriminant.fit(X,Y);

谁能帮我画出与C分离的超平面?任何建议都会有很大帮助。

此外,上面的示例是 2D 的,但是,我也有兴趣在 3D 中绘制它们(即示例数据 X 有三列)。如果你能帮忙就更好了。

【问题讨论】:

    标签: matlab classification


    【解决方案1】:

    借鉴 Matlab 的 classify() 文档中的示例:

    Class1 = 1;
    Class2 = 2;
    K = C.Coeffs(Class1,Class2).Const;
    L = C.Coeffs(Class1,Class2).Linear;
    f = @(x,y) K + [x y]*L;
    
    hold on;
    ezplot(f, [min(X(:,1)) max(X(:,1)) min(X(:,2)) max(X(:,2))]);
    

    请注意,上面的示例在二维空间中绘制了两个类之间的成对边界。如果您有其他类,则必须适当地修改 Class1Class2。我相信通过一些额外的工作,您可以找到将此函数扩展到 N 维空间。

    【讨论】:

    • 非常感谢瑞恩。由于classifyClassificationDiscriminant 之间存在一些差异(见link),我更感兴趣的是坚持使用后一个分类器以保持我之前工作的完整性。关于从这个函数中找到超平面有什么进一步的建议吗?
    • 尝试代码了吗?尽管我将它基于classify,但我重写了它以与ClassificationDiscriminant 一起使用。从字面上看,您所要做的就是复制并粘贴并按照您的初始代码 sn-p 运行它。
    猜你喜欢
    • 1970-01-01
    • 2018-03-12
    • 2016-07-20
    • 2021-05-08
    • 2015-02-12
    • 2014-07-13
    • 2011-12-22
    • 2020-04-11
    • 2021-03-09
    相关资源
    最近更新 更多