2017-07-19 3 views
1

私は統計から来ていませんが、マシンラーニングとNNを使って1つの作業を行うことで、私が学んだことから、列車試験の前にデータをスケーリングするのは良い選択ではありませんが、列車試験の分離後にスケーリングが行われる場合はこの例を参照してください。sklearn標準スケーラ()は、テスト行列の結果に影響を与えることができます

import numpy as np 
from sklearn.preprocessing import StandardScaler 


train_matrix = np.array([[1,2,3,4,5]]).T 

test_matrix = np.array([[1]]).T 


e =StandardScaler() 
train_matrix = e.fit_transform(train_matrix) 
test_matrix = e.fit_transform(test_matrix) 

print(train_matrix) 

print(test_matrix) 

[out]: 

[[-1.41421356] #train data 
[-0.70710678] 
[ 0.  ] 
[ 0.70710678] 
[ 1.41421356]] 


[[ 0.]] #test data 

クラスは、あなたのNN結果が傷つけることができ、各データセットとエラー用の2つの異なるスケーリング処理を行うだろうStandardScaler:テストマトリックス1で今は0である一方、

列車のマトリックス1には、-1.41421356ですトレーニングウエイトに関するテストデータを使用して予測モデルを作成するとします。 1の場合、全く異なる結果が得られます。これを克服する方法は?

答えて

2

列車を変換して別々にテストしないでください。その代わりに、スケーラーをトレーニングデータに合わせて(そしてスケーラーを使用してスケーラーを変換して)、フィッティングしたスケーラーでテストデータを変換する必要があります。だから、あなたが行う必要があり、あなたのコード内で:

[[-1.41421356] 
[-0.70710678] 
[ 0.  ] 
[ 0.70710678] 
[ 1.41421356]] 


[[-1.41421356]] 
+0

おかげミリアム:あなたは訓練された形質転換され、テストデータを印刷するとき

e =StandardScaler() train_matrix = e.fit_transform(train_matrix) test_matrix = e.transform(test_matrix) 

次に、あなたが期待する結果を得ることができます。あなたはもう2度私を助けました。ではごきげんよう! – Makaroniiii

関連する問題