我一直致力于机器学习课程,目前正在进行分类课程。我实现了分类算法并获得了参数和成本。赋值已经具有绘制决策边界的功能,但它有效,但我试图阅读它们的代码并且无法理解这些行。
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));
有人解释?
答案 0 :(得分:2)
我也和你一样学习。我想代码的作用是在决策线上生成两个点。
如你所知,你有这个功能:
theta0 + theta1 * x1 + theta2 * x2 = 0
它可以改写为:
c + mx + ky = 0
其中x
和y
是与x1
和x2
对应的轴,c
是theta(0)
或y截距,{ {1}}是斜率或m
,theta(1)
是k
。
此等式(theta(2)
)对应于决策边界,因此代码为c + mx + ky = 0
(或x
)找到两个值,涵盖整个数据集(-2和+2)在x1
plot_x
和min
个函数中),然后使用公式查找相应的max
(或y
)值。最后,可以绘制决策边界 - x2
。
换句话说,它的作用是使用公式生成两个点来绘制图上的线,这样做的原因是Octave不能绘制给定方程的线。
希望这可以帮到你,对不起任何语法错误或不清楚的解释^。^
重新排列方程帮助了我,所以在这里添加:
plot(plot_x, plot_y)
请注意,Octave中的索引从1开始,而不是0,因此plot_y = -1/theta2 (theta1*plot_x + theta0)
,theta(3) = theta2
和theta(2) = theta1
。
此theta(1) = theta0
等式相当于:
plot_y