Я написал код многопараметрической линейной регрессии с нуля, но когда я пытаюсь запустить код, окончательное значение тэты не корректно (некоторые записи имеют порядок 10^20
). Может кто-нибудь помочь мне?
Это набор данных прогноза Бостонского дома. Я пытаюсь предсказать цену дома. Я написал код линейной регрессии в соответствии с алгоритмом, предложенным профессором Эндрю Нгом в его курсе машинного обучения. Я попытался реализовать этот алгоритм в Python. Но мои тэта-значения все еще неверны.
Вот ссылка
Вот мой код:
import pandas as pd
import numpy as np
X_train = pd.read_csv("train.csv")
X_test = pd.read_csv("test.csv")
X_train.head()
X_train.shape
y_train = X_train['medv']
X_train = X_train.drop(columns = ['medv'], axis = 1)
theta = np.zeros(14)
alpha = 0.01
m = len(theta)
X_train.head()
X_train = X_train.drop(columns = ['ID'], axis = 1)
X_test = X_test.drop(columns = ['ID'], axis = 1)
X_train = np.column_stack((np.ones(len(X_train)),X_train))
X_train.shape
for j in range(1000):
for i in range(m):
h = np.dot(X_train, theta)
d_J = np.dot((h - y_train), X_train[:, i])
theta[i] = theta[i] - (alpha)*(1/m)*d_J
Тета-значения:
array([[ 5.41571429e+00],
[ 7.35302513e+00],
[ 5.96202743e+01],
[-6.13110873e+02],
[ 1.00881890e+02],
[ 9.36757919e+02],
[ 8.19165542e+03],
[-7.07535737e+05],
[ 3.54080584e+07],
[-1.02568786e+08],
[ 1.22841775e+11],
[-2.25615368e+14],
[ 3.50107077e+17],
[-3.56510417e+20]])