Octave 用倍频程绘制判定边界线
我一直在学习机器学习课程,目前正在学习分类。我实现了分类算法,得到了参数和成本。这个任务已经有了一个绘制决策边界的功能,它工作了,但我试图阅读他们的代码,无法理解这些行Octave 用倍频程绘制判定边界线,octave,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)); 有人解释吗?我也跟你学同样的课程。我猜代码的作用是在
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在绘图x
最小值和最大值
函数中),然后使用该方程查找相应的y
(或x2
)值。最后,可以绘制决策边界--绘图(绘图x,绘图y)
换言之,它所做的是使用方程生成两点,在图形上绘制直线,这样做的原因是八度音阶无法绘制给定方程的直线
希望这能对你有所帮助,抱歉语法错误或解释不清楚^^
重新排列方程式对我很有帮助,因此在此添加:
plot_y = -1/theta2 (theta1*plot_x + theta0)
请注意,倍频程中的索引从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)
c+mx+ky=0
-ky=mx+c
y=-1/k(mx+c)
很好的解释。谢谢!