Matlab 绘制LDA的超平面(分类判别式)
我试图通过可视化研究分离超平面来比较我的数据上的各种分类器,如LDA和SVM等 目前我使用ClassificationDiscriminant作为LDA分类器,与SVM可以在图上绘制超平面不同,我无法找到绘制LDA分类器超平面的方法 下面的脚本是如何生成示例数据并使用ClassificationDiscriminant对其进行分类的:Matlab 绘制LDA的超平面(分类判别式),matlab,classification,Matlab,Classification,我试图通过可视化研究分离超平面来比较我的数据上的各种分类器,如LDA和SVM等 目前我使用ClassificationDiscriminant作为LDA分类器,与SVM可以在图上绘制超平面不同,我无法找到绘制LDA分类器超平面的方法 下面的脚本是如何生成示例数据并使用ClassificationDiscriminant对其进行分类的: %% Data & Label X = [randn(100,2); randn(150,2) + 1.5]; Y = [zeros(100,1); on
%% 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
分离的超平面吗?任何建议都会大有帮助
此外,上面的示例是二维的,但是,我也对在三维中绘制它们感兴趣(即示例数据
X
有三列)。如果您能提供帮助,那就更好了。借用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维空间的扩展。非常感谢Ryan。由于分类
和分类鉴别
(见中)之间存在一些差异,我更感兴趣的是坚持使用后一种分类器,以保持与我以前工作的完整性。关于从这个函数中找到超平面还有什么建议吗?你试过代码了吗?尽管我根据classify
重新编写了它,以使用ClassificationDiscriminant
。实际上,您所要做的就是复制、粘贴并按照初始代码段运行它。