【发布时间】:2020-05-24 18:00:23
【问题描述】:
我正在尝试从头开始实现梯度下降算法并将其用于波士顿数据集。这是我目前所拥有的:
import numpy as np
from sklearn.datasets import load_boston
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
dataset = load_boston()
X = dataset.data
y = dataset.targe
def gradient_descent(X, y, eta = 0.0001, n_iter = 1000):
'''
Gradient descent implementation
eta: Learning Rate
n_iter: Number of iteration
'''
b0 = b1 = 1
costList = []
m = len(y)
for i in range(n_iter):
error = y - (b0 + X*b1)
#Updating b0 and b1
b0 += -eta * (-2 * error.sum() / m )
b1 += -eta * (-2 * X.dot(error).sum() / m )
costList.append(mean_squared_error(y, (b0 + b1*X)))
return costList
listt = gradient_descent(X, y)
但是,当我尝试计算 error 时收到以下错误:operands could not be broadcast together with shapes (506,) (506,13) 其中 y 的形状是 (506,) and shape of y_predict is (506, 13) I
出现这个错误是因为 y_predict 的维度是 2 而 y 是一维的。但是,我不知道如何克服这个问题。
GD 在我只使用整个数据集的一个特征时有效;但是,我想使用所有这些
【问题讨论】:
-
这真的是导致您引用的错误消息的代码吗?一方面,您拼错了“目标”。另一方面,您的代码中没有名为“y_predict”的变量。
标签: numpy linear-regression gradient-descent