我试图通过直观地研究分离超平面来比较我的数据上的各种分类器,例如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
有三列)。如果你能提供帮助会更好。
答案 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))]);
请注意,上面的示例绘制了二维空间中两个类之间的成对边界。如果您有其他课程,则必须适当修改Class1
和Class2
。我相信通过一些额外的工作你可以找到这个函数到N维空间的扩展。