【问题标题】:Machine Learning Gradient descent python implementation机器学习梯度下降python实现
【发布时间】:2019-03-22 04:26:55
【问题描述】:

问题

我已经写了这段代码,但是这给出了错误:

RuntimeWarning:在乘法中遇到溢出

t2_temp = sum(x*(y_temp - y))

RuntimeWarning:double_scalars 中遇到溢出

t1_temp =  sum(y_temp - y)

我应该使用特征缩放还是我的代码有问题?

代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

def gradient_descent(x,y,t1,t2,repeat,alpha):
    n = x.size
    for i in range(repeat):
        y_temp = x*t2 + t1
        t1_temp =  sum(y_temp - y)
        t2_temp = sum(x*(y_temp - y))
        t1 = t1 - alpha * (t1_temp/n)
        t2 = t2 - alpha * (t2_temp/n)

    return [t1,t2]


d = pd.read_csv("train.csv")

x = d['GrLivArea']
y = d['SalePrice']

x = (np.array(x.values))
y = (np.array(y.values))


alpha = 0.047
repeat = 3000

theta = [1.23154644,1.654132398]

tt = gradient_descent(x,y,theta[0],theta[1],repeat,alpha)

print("FINISH")

【问题讨论】:

  • 尝试按一个因子缩放列中的值,然后运行它。很可能列值太大,导致溢出。
  • 您使用的是哪个版本的 Python?

标签: python machine-learning linear-regression gradient-descent


【解决方案1】:

您的代码很好; xy 太大了。您可以执行标准化或其他形式的缩放。

【讨论】:

  • 我正在申请,但为了测试数据,我得到了错误的输出。特征缩放将给出我们可以在方程中使用的 theta1 和 theta2 的值,或者还应该进一步处理测试数据?
  • 在得到 theta1 和 theta2 的值后,我将其代入方程并检查我的测试数据,基本上是绘图大小,因此应该是价格的输出也按比例缩小。
  • 如果你没有缩放你的y值,那么x的缩放应该只影响系数,而不是结果。你的系数收敛了吗? (检查梯度是否接近 0)
  • 是的,我已经缩放了 x 和 y 并且我的系数也在收敛,两者都接近 0。
  • @K.Bakshi 好吧,在这种情况下,您需要再次扩展 y
最近更新 更多