Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Octave 用倍频程绘制判定边界线_Octave - Fatal编程技术网

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)

很好的解释。谢谢!