我正在编写线性回归的代码,其中我的模型将根据面积预测房价。所以,我只有一个特征,那就是房子的面积,我的输出是价格。我的输入是面积在1000 - 9000之间,房价在280000 - 800000之间。那么,我应该如何执行功能缩放,以及我应该如何通过输出来管理它。我的意思是,如果我把房子的面积在0-1的范围内,房价也在0-1的范围内,然后找出theta1和theta2的值(因为我正在应用线性回归方程,如output = theta1 + theta2*input ),或者我应该将房价降低到1,000-9,000的范围。
我正在应用特征缩放,其中我将输入值和输出值都设置在0-1之间,我的模型没有给出正确的答案。我能找出其中的错误,但我不能纠正它。请告诉我该如何继续。
发布于 2019-03-25 21:23:52
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*Δ
其中alpha是学习率,随着时间的推移,权重将自动调整。所以这两者之间没有区别。只有那个归一化的必须处理小于1的数字,所以计算会更容易。
https://stackoverflow.com/questions/55326356
复制相似问题