Theanoを使用したKerasのX_Trainの形式
-
22-10-2019 - |
質問
すでにSklearnを使用した後、回帰のためにKeras(Theano Backend)を試してみたいと思います。
このために、私はこの素敵なチュートリアルを使用します http://machinelearningmastery.com/regression-tutorial-keras-deep-learning-library-python/トレーニングデータを自分のトレーニングデータに置き換えようとしました。
import numpy
import pandas
import pickle
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
[X, Y] = pickle.load(open("training_data_1_week_imp_lt_15.pkl", "rb"))
X_train, X_test, y_train, y_test = train_test_split( X, Y, test_size=0.5, random_state=42)
scaler = StandardScaler()
scaler.fit(X_train) # Don't cheat - fit only on training data
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
print (X_train.shape)
# define base mode
def baseline_model():
# create model
model = Sequential()
model.add(Dense(8, input_dim=8, init='normal', activation='relu'))
model.add(Dense(1, init='normal'))
# Compile model
model.compile(loss='mean_squared_error', optimizer='adam')
return model
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# evaluate model with standardized dataset
estimator = KerasRegressor(build_fn=baseline_model, nb_epoch=100, batch_size=5, verbose=0)
estimator.fit(numpy.array(X_train),y_train)
ただし、次のエラーが発生します。
Exception: Error when checking model target: the list of Numpy arrays that you are
passing to your model is not the size the model expected. Expected to see 1
arrays but instead got the following list of 6252 arrays: ...
xの形式は通常のsklearn形式です:print(x_train.shape)=(6252、8)
入力xを正しくフォーマットするにはどうすればよいですか。
私が試したのは転置でしたが、これはうまくいきませんでした。
私もすでにWebを検索していましたが、解決策/説明が見つかりませんでした。
ありがとう!
編集: これが小さなサンプルファイルです https://ufile.io/8a428
[X, Y] = pickle.load(open("test.pkl", "rb"))
解決
私はこれを解決しました(まだ頭を壁にぶつけています):
estimator.fit(numpy.array(X_train),numpy.array(y_train))
これは機能します。理由がわかりません。エラーメッセージは非常に誤解を招くiMhoです。
所属していません datascience.stackexchange