在 Octave 中绘制决策边界线

Plotting decision boundary line in Octave

我一直在学习机器学习课程,目前正在学习分类。我实现了分类算法并获得了参数和成本。该作业已经具有绘制决策边界的功能并且可以正常工作,但我试图阅读他们的代码但无法理解这些行。

plot_x = [min(X(:,2))-2,  max(X(:,2))+2]; 
% Calculate the decision boundary line
plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1));

有人解释一下吗?

我也和你上同样的课程。我猜代码的作用是在决策线上生成两个点。

如您所知,您拥有以下功能:

theta0 + theta1 * x1 + theta2 * x2 = 0

可以改写为:

c + mx + ky = 0

其中xy是对应x1x2的轴,ctheta(0)或y截距, m 为斜率或 theta(1), ktheta(2).

这个等式 (c + mx + ky = 0) 对应于决策边界,因此代码找到 x(或 x1)的两个值,它们覆盖了整个数据集(-2 和+2 in plot_x min and max functions) 然后使用等式找到对应的 y (or x2) 值。最后,可以绘制决策边界——plot(plot_x, plot_y).

换句话说,它所做的是使用方程生成两个点来绘制图形上的线,这样做的原因是Octave无法在给定方程的情况下绘制线。

希望对您有所帮助,如有语法错误或解释不清敬请见谅^.^


重新排列方程对我有帮助,所以在这里添加:

plot_y = -1/theta2 (theta1*plot_x + theta0)

请注意 Octave 中的索引从 1 开始,而不是从 0 开始,因此 theta(3) = theta2theta(2) = theta1theta(1) = theta0

这个plot_y等式等价于:

c + mx + ky = 0             <=>
        -ky = mx + c        <=>
          y = -1/k (mx + c)