【发布时间】:2017-03-14 12:23:13
【问题描述】:
我是机器学习和 numpy 的新手,我一直在尝试在 sklearn 的波士顿住房数据集上运行梯度下降,我的实现适用于小型随机数据集,但在波士顿数据集中它会产生这些警告
<string>:12: RuntimeWarning: overflow encountered in square
<string>:15: RuntimeWarning: invalid value encountered in subtract
然后输出是
Output
array([ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan, nan])
这是我的梯度下降代码
import numpy as np
from sklearn.datasets import load_boston
from matplotlib import pyplot as plt
def gradient_descent(x,y,alpha,theta):
m=y.shape[0]
xtranspose = x.transpose()
i=0
cost =488
while cost>0.5:
hyp = np.dot(x, theta)
loss = hyp - y
cost = np.sum(loss ** 2)/(2*m)
plt.scatter(i,cost)
gradient = np.dot(xtranspose, loss)/m
theta = theta - alpha * gradient
i=i+1
plt.show()
return theta
dataset = load_boston()
m,n = dataset['data'].shape
x = np.ones((m,n+1))
x[:,:-1] = dataset['data']
y= dataset['target']
alpha=0.005
theta=np.ones(x.shape[1])
theta = gradient_descent(x,y,alpha,theta)
【问题讨论】:
-
我认为需要一个更好的初始猜测。
loss ** 2溢出,导致后续问题。 -
我遇到了完全相同的错误,知道如何解决吗?
标签: python numpy machine-learning linear-regression