MinMaxScaler broadcast shapes
You made some mistakes on MinMaxScaler.

MinMaxScaler shouldn't be fitted twice(as internal parameters inside MinMaxScaler will be changed), and dataX &amp; dataY should have their own scaler(as they have different minimum and maximum values.

Try to do something like this:

self.x_scaler = MinMaxScaler()
self.y_scaler = MinMaxScaler()

dataX = self.x_scaler.fit_transform(dataX)
dataY = self.y_scaler.fit_transform(dataY)

self.model.fit(dataX, dataY, nb_epoch=1000)

data = numpy.array([[val1, val2, val3]])
data = self.x_scaler.transform(data)
prediction = self.model.predict(data)
real_prediction = self.y_scaler.inverse_transform(prediction)