Я делаю поиск по сетке для настройки гиперпараметров оценщика стека (объект StackingClassifier из библиотеки sklearn.ensemble). Я использовал библиотеку scikit для ML и функцию RandomizedSearchCV. В дополнение к этому, базовыми оценщиками стека для настройки являются конвейеры (объект конвейера из библиотеки imblearn.pipeline), где первым шагом каждого конвейера является объект ColumnSelector из библиотеки mlxtend. Поиск по сетке предназначен для просмотра длинного списка комбинаций переменных, поэтому распределение параметров для сетки происходит только по параметрам «cols» для объекта 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_'