首页 > 解决方案 > 关于 Epoch 问题的梯度下降成本图

问题描述

我正在尝试相对于 epoch 绘制梯度下降 cost_list,但是当我尝试这样做时,我迷失了基本的 python 函数结构。我正在附加我想要做的代码结构。

def gradientDescent(x, y, theta, alpha, m, numIterations):
xTrans = x.T
cost_list=[]
for i in range(0, numIterations):
    hypothesis = np.dot(x, theta)
    loss = hypothesis - y
    cost = np.sum(loss ** 2) / (2 * m)
    cost_list.append(cost)
    print("Iteration %d | Cost: %f" % (i, cost))
    # avg gradient per example
    gradient = np.dot(xTrans, loss) / m
    # update
    theta = theta - alpha * gradient
    #a = plt.plot(i,theta)
return theta,cost_list

我想做的是在每一步都返回“cost_list”并创建一个成本列表,我现在正尝试使用下面的代码行进行绘图。

theta,cost_list=gradientDescent(x,y,bias,0.000001,len(my dataframe),100)
plt.plot(list(range(numIterations)), cost_list, '-r')

但这给了我未定义 numIterations 的错误。应该对代码进行哪些可能的编辑

标签: pythonmachine-learning

解决方案


我用示例数据尝试了你的代码;

df = pd.DataFrame(np.random.randint(1,50, size=(50,2)), columns=list('AB'))
x=df.A
y=df.B
bias = np.random.randn(50,1)
numIterations = 100
theta,cost_list=gradientDescent(x,y,bias,0.000001,len(df),numIterations)
plt.plot(list(range(numIterations)), cost_list, '-r')

在此处输入图像描述


推荐阅读