具有单个特征的梯度下降中的特征缩放

时间:2019-03-24 17:10:47

标签: machine-learning linear-regression gradient-descent

我正在编写线性回归代码,其中我的模型将根据面积预测房屋价格。因此,我只有一个特征是房屋面积,而我的输出是价格。我的输入是面积在1000-9000之间的房屋价格在280000-800000之间。因此,我应该如何执行特征缩放以及如何使用输出进行管理。我的意思是问我是否要使房屋面积在0-1范围内,并且房价也在0-1范围内,而不是找出theta1和theta2的值(因为我正在应用线性回归方程,如output = theta1 + theta2 *输入),否则我应该将房价降低到1000-9000范围内。

我正在应用特征缩放,其中我将输入值和输出值都放在0-1之间,我的模型没有给出正确的答案。我可以找出其中的错误,但无法纠正。请告诉我我应该如何进行。

1 个答案:

答案 0 :(得分:0)

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

其中alpha是学习率,随着时间的流逝,权重将自动调整。因此,这两者之间没有区别。只有归一化的那个必须处理小于1的数字,因此计算会更容易。