Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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
Python 如何使用matplotlib在x轴上绘制循环变量i,在y轴上绘制循环中的局部变量_Python_Numpy_Matplotlib_Linear Regression_Gradient Descent - Fatal编程技术网

Python 如何使用matplotlib在x轴上绘制循环变量i,在y轴上绘制循环中的局部变量

Python 如何使用matplotlib在x轴上绘制循环变量i,在y轴上绘制循环中的局部变量,python,numpy,matplotlib,linear-regression,gradient-descent,Python,Numpy,Matplotlib,Linear Regression,Gradient Descent,我正在使用numpy在线性回归上练习梯度下降。这是我的梯度下降过程: def batch_gradient_descent(data_points, initial_b, initial_W, lr, iterations): b = initial_b W = initial_W for i in range(iterations): # Calcultes Gradient Descent for n-iterations. b, W = gradie

我正在使用numpy在线性回归上练习梯度下降。这是我的梯度下降过程:

def batch_gradient_descent(data_points, initial_b, initial_W, lr, iterations):
    b = initial_b
    W = initial_W
    for i in range(iterations): # Calcultes Gradient Descent for n-iterations.
        b, W = gradient_step(b, W, data_points, lr)
        current_cost = cost(b, W, data_points)
        # plt.figure(figsize=(8, 4))
        # plt.plot(i, current_cost, linewidth=1)
        # plt.xlabel("iteration")
        # plt.ylabel("log(L)")
        # plt.title("log(L) After "+str(i)+"th iteration")

    plt.show()
    return [b, W]
我需要使用matplotlib总共绘制两个图形:

  • x轴是i,y轴是每个i的对数(成本)值

  • x轴是i,y轴是W中每个元素值的曲线,它是一个5*1的向量。因此,此图中将有5行

  • 顺便说一下,总迭代次数是200,这意味着x轴上的值范围应该是0-200

    我最初的解决方案在代码中有注释,但它实际绘制的是许多数字,看起来像:


    正确的方法是什么?

    您可以将它们附加到
    x
    y
    轴的列表中

    x = []
    y = []
    
    def batch_gradient_descent(data_points, initial_b, initial_W, lr, iterations):
        b = initial_b
        W = initial_W
        for i in range(iterations): # Calcultes Gradient Descent for n-iterations.
            b, W = gradient_step(b, W, data_points, lr)
            current_cost = cost(b, W, data_points)
            x.append(i)
            y.append(current_cost)
        return [b, W]
    
    然后将其绘制为:

    plt.figure(figsize=(8, 4))
    plt.plot(x, y, linewidth=1)
    plt.xlabel("iteration")
    plt.ylabel("log(L)")
    plt.title("log(L) After " + str(x[-1]) + "th iteration")
    plt.show()