#python #machine-learning #scikit-learn #lstm #ensemble-learning
Вопрос:
Я новичок в машинном обучении и пытаюсь создать алгоритм укладки ансамбля с использованием LSTM и GRU. Однако я получаю следующую ошибку:
Traceback (most recent call last):
File "<input>", line 3, in <module>
File "I:API and Datasetvenvlibsite-packagessklearnensemble_stacking.py", line 684, in fit
return super().fit(X, y, sample_weight)
File "I:API and Datasetvenvlibsite-packagessklearnensemble_stacking.py", line 139, in fit
names, all_estimators = self._validate_estimators()
File "I:API and Datasetvenvlibsite-packagessklearnensemble_base.py", line 241, in _validate_estimators
raise ValueError(
ValueError: The estimator Sequential should be a regressor
Я не уверен, как интерпретировать эту ошибку или что с ней делать. Ниже приведены мои модели для справки.
Модель LSTM
# model.add(LSTM(200, input_shape=(1,3), activation='relu', return_sequences=True))
LSTMmodel.add(Bidirectional(LSTM(100, input_shape=(1, lookback))))
LSTMmodel.add(Dense(100, activation='relu'))
LSTMmodel.add(Dense(50, activation='relu'))
LSTMmodel.add(Dense(1, activation='sigmoid'))
LSTMmodel.compile(loss='mean_absolute_error', optimizer='adam')
keras.backend.set_value(LSTMmodel.optimizer.learning_rate, 0.0007)
LSTMmodel.fit(X_train, Y_train_scaled, epochs=10, batch_size=5000, verbose=1)
Примечание: Структура модели GRU аналогична структуре LSTM
Модель Ансамбля Укладки
estimator_list = [('GRUmodel', GRUmodel), ('LSTMmodel', LSTMmodel)]
stack_model = StackingRegressor(estimators=estimator_list, final_estimator=LogisticRegression)
stack_model.fit(X_train, Y_train.ravel())
Ответ №1:
Вы используете StackingRegressor, в то время как ваш final_estimator является классификатором. Вы можете попробовать использовать StackingClassifier, если собираетесь использовать LogisticRegression в качестве final_estimator.
Комментарии:
1. Я только что попробовал использовать StackingClassifier, и это дало мне ошибку значения, которая, по сути, означает, что я передаю поплавки в классификатор. Это проблема регрессии, а не проблема классификации. Есть еще какие-нибудь зацепки?
2. Если это проблема регрессии, то почему вы используете «LogisticRegression» в качестве final_estimator, потому что «LogisticRegression» является классификатором.
3. Попробуйте использовать какой-нибудь другой регрессор в качестве вашего final_estimator
4. Можете ли вы посоветовать, какой из них использовать, пожалуйста? Я новичок. Я попытался использовать линейную регрессию, но это не сработало.
5. В чем ошибка, которую вы получили при использовании линейной регрессии ?