首页 > 解决方案 > 如何动态更改梯度下降的输入特征

问题描述

我正在尝试使用不同的输入特征实现梯度下降,但我想动态地执行它,但没有发生。

假设当我在 2 中的输入特征时,我的数据集看起来像这样。

x0 x1 x2 Y
 1 2  3  4
 1 5  6  7
 1 8  9  10 

然后我执行我的梯度下降

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

其中 theta 是权重,alpha 是学习率,m = 当时数据集的长度,numIteration 基本上是梯度下降将运行的次数。

一旦梯度下降完成,输入特征的我的形状就会改变

X0 X1 X2 X3  Y
1  2  3  4   5
1  6  7  8   9
1 10 11 12   13

然后它会再次使用上面的函数计算梯度下降,它应该迭代地绘制关于 numIterations 和成本的图

我被困在创建一个动态结构中,它应该动态地获取特征数量并计算梯度下降

手动我能够做到,但是当它超过 6 或 7 个功能时,最多运行它变得非常困难。

标签: pythonmachine-learning

解决方案


推荐阅读