绘制LDA的超平面(ClassificationDiscriminant)

时间:2013-05-02 17:18:38

标签: matlab classification

我试图通过直观地研究分离超平面来比较我的数据上的各种分类器,例如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有三列)。如果你能提供帮助会更好。

1 个答案:

答案 0 :(得分:0)

借用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维空间的扩展。