我正在解决一个问题,我使用 3 个功能(3 列)使用 Elastic Net Regression 预测价格。如果没有标准化或缩放,即使只有 20 行训练数据,我得到的结果还不错,但我通过标准化或缩放阅读过,你可以获得更好的结果。我已经看到了很多这样做的方法,并且有点令人困惑。标准化输入的最佳方法是什么?如何标准化一组看不见的数据?以下是我到目前为止的一些代码。
设置培训和验证
X = array[:,0:3]
y = array[:,3]
X_train, X_validation, Y_train, Y_validation = train_test_split(X,y, test_size=0.20, random_state=1)
在 Elastic Net Regression 上拟合数据
elastic = ElasticNet()
elastic.fit(X_train, Y_train)
为看不见的数据定义预测函数
def predict(a,b,c):
input = [[a,b,c]]
input_df=pd.DataFrame(input,columns=('count', 'length', 'diverts'))
final_input = input_df.values
output=elastic.predict(final_input)
print(output)
我会像这样对看不见的输入做出预测:
predict (3,1188,80)
第一列可能需要注意,最小值为 2,最大值为 6。第二列的最小值为 509,最大值为 2688。第三列的最小值为 17,最大值为 212。输出列的范围从 1,470,000 到4,200,000。
我读过我只需要规范化输入(训练和验证)而不是输出。我该如何解决这个问题以及如何规范化看不见的输入以进行真实世界的预测?