2017-06-30 11 views
2

私はニューラルネットを初めて使用しています(放棄)。Kerasモデルからの出力を元のスケールに再スケーリングする

私は、8つの特徴に基づいてコンクリートの強度を予測する回帰問題を抱えています。私が最初にやった、最小 - 最大の正規化を使用してデータを再スケーリングされています

# Normalize data between 0 and 1 
from sklearn.preprocessing import MinMaxScaler 

min_max = MinMaxScaler() 
dataframe2 = pd.DataFrame(min_max.fit_transform(dataframe), columns = dataframe.columns) 

その後、numpyの配列にデータフレームに変換し、X_train、y_trainに分割し、X_test、y_test。 は、今ここで、ネットワーク自体のKerasコードである:

from keras.models import Sequential 
from keras.layers import Dense, Activation 

#Set the params of the Neural Network 
batch_size = 64 
num_of_epochs = 40 
hidden_layer_size = 256 

model = Sequential() 
model.add(Dense(hidden_layer_size, input_shape=(8,))) 
model.add(Activation('relu')) 
model.add(Dense(hidden_layer_size)) 
model.add(Activation('relu')) 
model.add(Dense(hidden_layer_size)) 
model.add(Activation('relu')) 
model.add(Dense(1)) 
model.add(Activation('linear')) 


model.compile(loss='mean_squared_error', # using the mean squared error function 
       optimizer='adam', # using the Adam optimiser 
       metrics=['mae', 'mse']) # reporting the accuracy with mean absolute error and mean squared error 

model.fit(X_train, y_train, # Train the model using the training set... 
      batch_size=batch_size, epochs=num_of_epochs, 
      verbose=0, validation_split=0.1) 

# All predictions in one array 
predictions = model.predict(X_test) 

質問:

  1. 予測アレイは、スケーリングされた形式のすべての値(0〜1)が、明らかになります私は予測が本当の価値にあることが必要です。これらの出力を実際の値に戻すにはどうすればよいですか?

  2. 回帰問題に対してMin-MaxまたはZ-Scoreの標準化がより適切ですか?この「バッチ正規化」はどうですか?

    inverse_transform(X):

docを1として、

+1

あなたの質問は少し広すぎますケラとは何の関係もありません。 –

+1

あなたの最初の質問は回答されており、2番目はstackoverflowの対象外です。 https://stats.stackexchange.com –

答えて

1

をありがとう、MinMaxScalerクラスが何をしたいんinverse_transform方法がありfeature_rangeによるXのスケーリングを元に戻します。 1については

+0

こんにちはCamilleri、ちょうど1つの質問を確認してください。私の場合、-1,1の間で入力データを拡大していますが、model.predict()の出力では-1と1の間でデータ範囲が異なります。-1.00688391のような奇妙な値があります。なぜですか?私はinverse_transofrm()で再スケールすると、これが悪い結果を引き起こしていると思います。 – mik1904

+0

@ mik1904最終層の非直線性はどうですか?出力が[0、1]になるにはシグモイドでなければならないので、数式は2 * Sigmoid - 1になります。結果は-1と1の間になるはずです –

+0

あなたの質問は何ですか?私は1つの隠れ層活性化関数を持つLSTMを持っています – mik1904

関連する問題