0

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

4

1 回答 1

0

借鉴 Matlabclassify()文档中的示例:

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))]);

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

于 2013-05-02T19:43:13.613 回答