我有一个二进制分类问题,我需要在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)成比例。
我不确定如何为给定的2D坐标计算P(样本/类)变量。现在,我正在使用公式
P(坐标/类)=(该类的坐标 - 平均值)/该类中各点的标准差。)
然而,我没有得到非常好的测试结果。我做错了吗?
答案 0 :(得分:3)
这是一个好方法,但公式不正确,请查看multivariate gaussian distribution article on 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
答案 1 :(得分:0)
假设您的公式已正确应用,另一个问题可能是从您的数据点推导出要素。您的问题可能不适合线性分类器。