在 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
其中x
和y
是对应x1
和x2
的轴,c
是theta(0)
或y截距, m
为斜率或 theta(1)
, k
为 theta(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) = theta2
、theta(2) = theta1
和 theta(1) = theta0
。
这个plot_y
等式等价于:
c + mx + ky = 0 <=>
-ky = mx + c <=>
y = -1/k (mx + c)
我一直在学习机器学习课程,目前正在学习分类。我实现了分类算法并获得了参数和成本。该作业已经具有绘制决策边界的功能并且可以正常工作,但我试图阅读他们的代码但无法理解这些行。
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
其中x
和y
是对应x1
和x2
的轴,c
是theta(0)
或y截距, m
为斜率或 theta(1)
, k
为 theta(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) = theta2
、theta(2) = theta1
和 theta(1) = theta0
。
这个plot_y
等式等价于:
c + mx + ky = 0 <=>
-ky = mx + c <=>
y = -1/k (mx + c)