2016-08-05 283 views
3

我使用Sklearn建立一个线性回归模型(或任何其它模型)具有以下步骤:标准化训练数据后预测使用sklearn新数据

X_train和Y_train是训练数据

  1. 规范训练数据

    X_train = preprocessing.scale(X_train) 
    
  2. 拟合模型

    model.fit(X_train, Y_train) 
    

一旦模型适合缩放数据,如何使用拟合模型预测新数据(一次一个或多个数据点)?

我现在用的就是

  1. 规模数据

    NewData_Scaled = preprocessing.scale(NewData) 
    
  2. 预测数据

    PredictedTarget = model.predict(NewData_Scaled) 
    

我想我错过了转换功能与preprocessing.scale所以我可以用训练有素的模型保存它,然后将它应用于新的不可见数据?请任何帮助。

回答

10

看看these docs

您可以使用预处理模块的StandardScaler类来记住训练数据的缩放比例,以便将其应用于将来的值。

from sklearn.preprocessing import StandardScaler 
X_train = np.array([[ 1., -1., 2.], 
        [ 2., 0., 0.], 
        [ 0., 1., -1.]]) 
scaler = preprocessing.StandardScaler().fit(X_train) 

scaler计算了平均值和比例因子以标准化每个特征。

>>>scaler.mean_ 
array([ 1. ..., 0. ..., 0.33...]) 
>>>scaler.scale_          
array([ 0.81..., 0.81..., 1.24...]) 

将它应用到数据集:

import numpy as np 

X_train_scaled = scaler.transform(X_train) 
new_data = np.array([-1., 1., 0.])  
new_data_scaled = scaler.transform(new_data) 
>>>new_data_scaled 
array([[-2.44..., 1.22..., -0.26...]]) 
+0

这是一个有用的答案 - 我想知道,如果StandardScaler也对新的看不见的数据使用。很高兴看到这种情况。 –

相关问题