Я пытаюсь реализовать алгоритм градиентного спуска с нуля и использовать его в наборе данных Бостона. Вот что у меня есть:
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, а у - одномерная. Однако я не знаю, как решить эту проблему.
GD работает, когда я использую только одну особенность всего набора данных; однако я хочу использовать их все