Ошибка значения при передаче входных данных в функцию прогнозирования

#machine-learning #keras #neural-network #conv-neural-network

Вопрос:

У меня есть следующие данные, входными данными для модели являются sampleNo, Модель и методика, а на выходе четыре значения: Прогрев, Время, Результат-I и Результат-II. После нормализации при переходе на однократное кодирование входной параметр становится шестым.

 SampleNo Model  Technique WarmUp  Time    Result-I  Result-II
  1      Test   Repart     0.99  31368.5    0.99    0.96
  2      Net    Sequence   0.99  31368.5    0.92    0.94
  3      Net    Repart     0.99  31368.5    0.79    0.96
  4      Test   Clone      0.99  31368.5    0.89    0.90

predictors=data.drop(['WarUp','Time','Result I', 'Result-II'], axis = 1)
target=data[['WarUp','Time','Result I', 'Result-II']]
#Normalising x variable
predictors_cat_converted=pd.get_dummies(predictors, prefix=['Model', 'Technique'])
pre_norms=predictors_cat_converted
#Normalising target variable
target= target.apply(lambda x:(x - x.min(axis=0)) / x.max (axis=0) - x.min (axis=0))

model=Sequential() 
model.add(Dense(50, activation= 'relu',input_shape=(6,))) 
model.add(Dense(50, activation= 'relu')) 
model.add(Dense(50, activation='relu'))#hidden layer 
model.add(Dense(4))#output
model.compile(optimizer='adam',loss='mean_squared_error') 
model.fit(pre_norms, target,validation_split=.3,epochs=100,verbose=1)
 

Теперь, когда в качестве входных данных я передаю следующий параметр, я получаю ошибку

 row = [1, 'Test','Repart']
newX = asarray([row])
print(model.predict(newX))
 

Ошибка:

 /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
    984           except Exception as e:  # pylint:disable=broad-except
    985             if hasattr(e, "ag_error_metadata"):
--> 986               raise e.ag_error_metadata.to_exception(e)
    987             else:
    988               raise

    ValueError: Input 0 of layer sequential_8 is incompatible with the layer: expected axis -1 of input shape to have value 6 but received input with shape (None, 3)
 

Комментарии:

1. Ваша модель ожидает передачи 6 функций (как вы определили в своей модели и обучили), но вы передали 3 функции для прогнозирования!!

2. Спасибо @Kaveh, но как бы я передал шесть изначально, это три входных параметра после кодирования, преобразованных в шесть.

3. Распечатайте преобразованные данные после манекенов, чтобы узнать, какие у вас есть столбцы, и установите на их основе тестовое значение. В любом случае вам следует провести предварительную обработку, прежде чем передавать тестовые данные в вашу модель.