代码之家  ›  专栏  ›  技术社区  ›  Levi

在倍频程中绘制判定边界线

  •  2
  • Levi  · 技术社区  · 7 年前

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

    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));
    

    有人解释吗?

    1 回复  |  直到 7 年前
        1
  •  7
  •   Cris Luengo    7 年前

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

    正如您所知,您具有以下功能:

    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 )覆盖整个数据集 plot_x min max 函数),然后使用方程找到相应的 y (或 x2个 )值。最后,可以绘制决策边界-- plot(plot_x, plot_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)