Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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 这个梯度下降算法有什么问题?_Python_Machine Learning_Linear Regression_Gradient Descent - Fatal编程技术网

Python 这个梯度下降算法有什么问题?

Python 这个梯度下降算法有什么问题?,python,machine-learning,linear-regression,gradient-descent,Python,Machine Learning,Linear Regression,Gradient Descent,X\u train已经使用StandardScaler()进行了规范化,并且分类列也已转换为一个热编码 X_train.shape=(32000, 37) 我使用下面的代码使用梯度下降法计算w的值 w = np.zeros(len(X_train.columns)) learning_rate = 0.001 for t in range(1000): Yhat = X.dot(w) delta = Yhat - Y_train w = w - learning

X\u train
已经使用
StandardScaler()
进行了规范化,并且分类列也已转换为一个热编码

X_train.shape=(32000, 37)
我使用下面的代码使用梯度下降法计算
w
的值

w = np.zeros(len(X_train.columns))
learning_rate = 0.001    
for t in range(1000):
    Yhat = X.dot(w)
    delta = Yhat - Y_train
    w = w - learning_rate*X_train.T.dot(delta)
My
w
向量爆炸(即增加非常快),并且
w
的每个条目都变成
NaN
。我试着将历代的数量减少到10、15、20等等,我发现
w
的每个元素都在发散而不是会聚

我试着使用正规方程,在这种情况下,
w
确实很好(为了可读性增加了换行符):


r^2
错误是
1
如果我使用正态方程来求解
w

梯度下降权重更新公式通过训练集大小标准化

在最后一行中,您需要将学习率除以训练集大小

修复代码:

w = w - (learning_rate/X_train.shape) * X_train.T.dot(delta)

梯度下降权重更新公式通过训练集大小进行归一化

在最后一行中,您需要将学习率除以训练集大小

修复代码:

w = w - (learning_rate/X_train.shape) * X_train.T.dot(delta)

在发生这种情况时,您能提供最小工作代码吗?在发生这种情况时,您能提供最小工作代码吗?因为权重更新发生在每次迭代之后(批=1),不需要avg,因为权重更新发生在每次迭代之后(批=1),不需要avg