# Format for X_train in keras using theano

I want to try out Keras (Theano backend) for regressions after already using sklearn.

For this I uses this nice tutorial http://machinelearningmastery.com/regression-tutorial-keras-deep-learning-library-python/ and tried to replace the training data there with my own.

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_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()
# Compile model
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)


However, i get the following error:

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: ...


The format of X is the usual sklearn format: print (X_train.shape) = (6252, 8)

How do I format my input X correctly.

What I tried was transposing but this did not work.

I also already searched the web but could not find a solution/explanation.

Thanks!

EDIT: here is a small sample file https://ufile.io/8a428

[X, Y] = pickle.load(open("test.pkl", "rb"))

• It seems your X_train is a python list which contains numpy ndarrays, rather than a single numpy ndarray. Could you please upload your training_data_1_week_imp_lt_15.pkl? – Icyblade Feb 21 '17 at 10:24
• Yes it is: X is essentially a list of lists. – El Burro Feb 21 '17 at 10:29
• However, I transform it to an ndarray estimator.fit(numpy.array(X_train),y_train) or at least thats what i thought i did – El Burro Feb 21 '17 at 10:52
• In my environment, your original code works with the sample data you uploaded. Maybe you can try to reinstall numpy? – Icyblade Feb 21 '17 at 13:30
• Despite the fix- it is interesting that it worked for you without. – El Burro Feb 21 '17 at 14:58

estimator.fit(numpy.array(X_train),numpy.array(y_train))

• The ... part(the part you omitted) of your error is your y_train data right? It may explain why np.array(y_train) works. – Icyblade Feb 21 '17 at 14:04
• The interesting part is that X_train and y_train are generated from train_test_split, which will return numpy ndarrays for sure. I can't figure out why your X_train or y_train is a list. – Icyblade Feb 21 '17 at 15:02