我正在使用Sklearn构建一个线性回归模型(或任何其他模型),其步骤如下:
X_train和Y_train是训练数据
-
标准化训练数据
X_train = preprocessing.scale(X_train)
-
拟合模型
model.fit(X_train, Y_train)
一旦模型使用缩放后的数据拟合完毕,我该如何使用该模型来预测新数据(无论是一次一个数据点还是多个数据点)?
我目前使用的方法是
-
缩放数据
NewData_Scaled = preprocessing.scale(NewData)
-
预测数据
PredictedTarget = model.predict(NewData_Scaled)
我认为我缺少一个与preprocessing.scale
相关的转换函数,以便我可以将其保存与训练模型一起,然后应用于新的未见数据?请问有什么帮助吗?
回答:
请查看这些文档。
您可以使用预处理模块中的StandardScaler
类来记录训练数据的缩放情况,以便您可以将其应用于未来的值。
from sklearn.preprocessing import StandardScalerX_train = np.array([[ 1., -1., 2.], [ 2., 0., 0.], [ 0., 1., -1.]])scaler = StandardScaler().fit(X_train)
scaler
已经计算出每个特征的均值和缩放因子以进行标准化。
>>>scaler.mean_array([ 1. ..., 0. ..., 0.33...])>>>scaler.scale_ array([ 0.81..., 0.81..., 1.24...])
要将其应用于数据集:
import numpy as npX_train_scaled = scaler.transform(X_train)new_data = np.array([-1., 1., 0.]) new_data_scaled = scaler.transform(new_data)>>>new_data_scaledarray([[-2.44..., 1.22..., -0.26...]])