Я пытаюсь реализовать градиентный спуск в Python. Хотя мой код возвращает результат, я думаю, что результаты, которые я получаю, совершенно неверны.
Вот код, который я написал:
import numpy as np
import pandas
dataset = pandas.read_csv('D:\ML Data\house-prices-advanced-regression-techniques\\train.csv')
X = np.empty((0, 1),int)
Y = np.empty((0, 1), int)
for i in range(dataset.shape[0]):
X = np.append(X, dataset.at[i, 'LotArea'])
Y = np.append(Y, dataset.at[i, 'SalePrice'])
X = np.c_[np.ones(len(X)), X]
Y = Y.reshape(len(Y), 1)
def gradient_descent(X, Y, theta, iterations=100, learningRate=0.000001):
m = len(X)
for i in range(iterations):
prediction = np.dot(X, theta)
theta = theta - (1/m) * learningRate * (X.T.dot(prediction - Y))
return theta
theta = np.random.randn(2,1)
theta = gradient_descent(X, Y, theta)
print('theta',theta)
Результат, который я получаю после запуска этой программы:
тета [[-5.23237458e + 228]
[-1.04560188e + 233]]
Какие очень высокие значения. Может кто-то указать на ошибку, которую я допустил в реализации.
Кроме того, вторая проблема заключается в том, что я должен установить очень низкое значение скорости обучения (в данном случае я установил значение 0,000001), чтобы работать с другой мудрой программой, которая выдает ошибку.
Пожалуйста, помогите мне в диагностике проблемы.