Масштабирование объектов в градиентном спуске с одной функцией - PullRequest
0 голосов
/ 24 марта 2019

Я пишу код для линейной регрессии, в котором моя модель будет прогнозировать цену домов на основе площади. Итак, у меня есть только одна особенность - это площадь дома, а моя продукция - это цена. Мой вклад - это область в диапазоне от 1000 до 9000, а цена домов в диапазоне от 280000 до 800000. Так, как я должен выполнить масштабирование функции и как мне управлять этим с выходом. Я хочу спросить, если я приведу площадь дома в диапазоне 0 - 1 и цены на жилье также в диапазоне 0 - 1, а затем выясню значение theta1 и theta2 (поскольку я применяю уравнение линейной регрессии, например, output = theta1 + theta2 * вход) или я должен уменьшить цены на жилье в диапазоне 1000 - 9000.

Я применяю функцию масштабирования, в которой я вводю значения и значения в диапазоне от 0 до 1, моя модель не дает правильных ответов. Я могу понять ошибку в этом, но я не могу исправить это. Пожалуйста, скажите мне, как мне действовать.

1 Ответ

0 голосов
/ 25 марта 2019
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import normalize
import numpy as np
X=np.random.randint(1000,9000,(10,))
Y=np.random.randint(100,200,(10,))+100*X
reg = LinearRegression().fit(X.reshape(-1,1), Y)
print(reg.score(X.reshape(-1,1),Y))
print(reg.coef_)
0.9999999822251018
[100.00518473]

X1=normalize(X.reshape(-1,1),axis=0)
Y1=normalize(Y.reshape(-1,1),axis=0)
reg = LinearRegression().fit(X1.reshape(-1,1), Y1)
print(reg.score(X1.reshape(-1,1),Y1))
print(reg.coef_)

0.9999999822251019
[[0.99982554]]

Это обычная линейная регрессия с использованием ненормализованных и нормализованных данных.Там не будет никакой разницы в этих случаях.Только заголовок вашего вопроса включает «Градиентный спуск». Поэтому, если вы используете метод градиентного спуска, веса будут автоматически скорректированы.

Как обычно SGD: w = w-alpha * delta

Где альфа-скорость обучения, вес будет автоматически корректироваться с течением времени.Так что нет никакой разницы между этими двумя.Только нормализованный должен иметь дело с числами меньше 1, поэтому вычисления будут проще.

...