Я делаю поиск по сетке для настройки гиперпараметров оценщика стека (объект StackingClassifier из библиотеки sklearn.ensemble). Я использовал библиотеку scikit для ML и функцию RandomizedSearchCV. В дополнение к этому, базовыми оценщиками стека для настройки являются конвейеры (объект конвейера из библиотеки imblearn.pipeline), где первым шагом каждого конвейера является объект ColumnSelector из библиотеки mlxtend. Поиск по сетке предназначен для просмотра длинного списка комбинаций переменных, поэтому распределение параметров для сетки происходит только по столбцам параметров для объекта ColumnSelector. В первый раз, когда я запустил этот код, все работало хорошо, затем я отложил проект и вернулся через несколько дней и обнаружил, что он больше не работает. Все в коде такое же, как я оставил, но когда я запустил метод, подходящий для объекта RandomizedSearchCV, я получил следующую ошибку:
AttributeError: объект ColumnSelector не имеет атрибута n_features_in_
Я не понимаю, что надето. Я пробовал много чего, даже удалял Anaconda, mlxtend, imblearn и переустанавливал с последними версиями, но он продолжает кричать одну и ту же ошибку. Я сделал поиск в Google, но, похоже, об этом нет никакой информации.
Вы можете мне помочь с этим вопросом?
Заранее спасибо.
Приложение: версия scikit - 0.23.1, версия mlxtend - 0.17.3, а версия для несбалансированного обучения - 0.7.0.
Полная трассировка приведена ниже, объект gr2 соответствует объекту RandomizedSearchCV, который предназначен для настройки классификатора стекирования. Я хочу отметить, что если я использую объект StackingClassifier из mlxtend, все работает нормально, но у этого объекта нет параметра cv, который имеет StackingClassifier из sklearn.ensemble и который мне нужен для повышения производительности (который у меня был раньше, когда все работало нормально).
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-94-9d8f412d45a3> in <module>
----> 1 gr2.fit(x_train,y_train)
~\anaconda3\lib\site-packages\sklearn\utils\validation.py in inner_f(*args, **kwargs)
71 FutureWarning)
72 kwargs.update({k: arg for k, arg in zip(sig.parameters, args)})
---> 73 return f(**kwargs)
74 return inner_f
75
~\anaconda3\lib\site-packages\sklearn\model_selection\_search.py in fit(self, X, y, groups, **fit_params)
763 refit_start_time = time.time()
764 if y is not None:
--> 765 self.best_estimator_.fit(X, y, **fit_params)
766 else:
767 self.best_estimator_.fit(X, **fit_params)
~\anaconda3\lib\site-packages\sklearn\ensemble\_stacking.py in fit(self, X, y, sample_weight)
423 self._le = LabelEncoder().fit(y)
424 self.classes_ = self._le.classes_
--> 425 return super().fit(X, self._le.transform(y), sample_weight)
426
427 @if_delegate_has_method(delegate='final_estimator_')
~\anaconda3\lib\site-packages\sklearn\ensemble\_stacking.py in fit(self, X, y, sample_weight)
147 for est in all_estimators if est != 'drop'
148 )
--> 149 self.n_features_in_ = self.estimators_[0].n_features_in_
150
151 self.named_estimators_ = Bunch()
~\anaconda3\lib\site-packages\sklearn\pipeline.py in n_features_in_(self)
623 def n_features_in_(self):
624 # delegate to first step (which will call _check_is_fitted)
--> 625 return self.steps[0][1].n_features_in_
626
627 def _sk_visual_block_(self):
AttributeError: 'ColumnSelector' object has no attribute 'n_features_in_'