如何在matlab中绘制线性决策边界

时间:2017-02-26 19:47:02

标签: matlab boundary

plotted two different dataset

我有2个不同的数据集,它们具有不同的mu和sigma,而X矢量如[1.8; 1.8。而且我也知道每个类的概率P(ω1)= P(ω2)= 1/2 我想在这两个数据集之间绘制线性决策边界,但我不知道该怎么做。我的代码在下面,这里

X = [1.8; 1.8];
u1 = [1;1]; u2 = [3;3];
s1 = [1 0;0 1]; s2 = [1 0;0 1];
Pr1 = 1/2;
Pr2 = 1/2;

r = mvnrnd(u1,s1,500);
plot(r(:,1), r(:,2), '+r');
hold on

r = mvnrnd(u2,s2,500);
plot(r(:,1), r(:,2), '+b');
hold on
grid on

W1 = (u1')/(s1(1,1))^2;
W10 = (u1'*u1)/(-2*s1(1,1)) + log(Pr1);
g1 = W1'.*X + W10;

W2 = (u2')/(s2(1,1))^2;
W20 = (u2'*u2)/(-2*s2(1,1)) + log(Pr2);
g2 = W2'.*X + W20;

有人可以向我提出任何想法吗?

2 个答案:

答案 0 :(得分:0)

诀窍是计算你想要绘制的决策边界的两个点。

W1_W2 = W2 - W1; % vector from W1 to W2
W1_W2_average = (W2 + W1)/2; % point in the middle between W1 and W2
W1_W2_orthogonal = [-W1_W2(2) W1_W2(1)]; % vector orthogonal to W1_W2
points = [W1_W2_average - 2*W1_W2_orthogonal; W1_W2_average + 2*W1_W2_orthogonal]; % Two points on the line you want to plot
plot(points(:, 1), points(:, 2)); %plot the line

请注意,我对分类问题不太熟悉。我可能在计算决策边界时忘记了一些术语。

答案 1 :(得分:0)

我详细解决了决策问题

首先,我使用参数x1和x2定义了参数函数,例如

g = @(x1,x2)

然后为了绘制决策边界,实现了g1-g2 = 0等方程式

e = @(x1,x2) (W1*[x1;x2] + w10 - W2*[x1;x2] - w20)
ezplot(g, [-xlim xlim -ylim ylim])

并完成了