4

我有一个需要在 MATLAB 中解决的二进制分类问题。有两个类,训练数据和测试数据问题来自两个类,它们是从高斯分布绘制的二维坐标。

样本是 2D 点,它们是这样的(A 类有 1000 个样本,B 类有 1000 个样本):我只是在这里发布其中的一些:

5.867766 3.843014 5.019520 2.874257 1.787476 4.483156 4.494783 3.551501 1.212243 5.949315 2.216728 4.126151 2.864502 3.139245 1.532942 6.669650 6.569531 5.032038 2.552391 5.753817 2.610070 4.251235 1.943493 4.326230 1.617939 4.948345

如果有新的测试数据进来,我应该如何对测试样本进行分类?

P(Class/TestPoint) 与 P(TestPoint/Class) * (ProbabilityOfClass) 成正比。

我不确定我们如何计算给定二维坐标的 P(Sample/Class) 变量。现在,我正在使用公式

P(坐标/类)=(坐标-该类的平均值)/该类中点的标准差)。

但是,我没有得到很好的测试结果。我做错什么了吗?

4

2 回答 2

3

这是一个好方法,但是公式不正确,请查看wikipedia 上的多元高斯分布文章

P(测试点|类)= 在此处输入图像描述,

在此处输入图像描述A的行列式在哪里。

 Sigma = classPoint*classPoint';
 mu = mean(classPoint,2);
 proba = 1/((2*pi)^(2/2)*det(Sigma)^(1/2))*...
         exp(-1/2*(testPoint-mu)*inv(Sigma)*(testPoint-mu)');

在您的情况下,由于它们在两个类中的点数一样多,因此 P(class)=1/2

于 2011-11-26T22:10:29.700 回答
0

假设您的公式被正确应用,另一个问题可能是从您的数据点推导特征。您的问题可能不适合线性分类器。

于 2011-11-26T22:36:54.797 回答