2016-08-05 281 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也對新的看不見的數據使用。很高興看到這種情況。 –

相關問題