В настоящее время я работаю над устранением рекурсивных функций (RFECV) в поиске по сетке (GridSearchCV) для методов на основе дерева с использованием scikit-learn. Для этого я использую текущую версию для разработчиков на GitHub (0.17), которая позволяет RFECV использовать важность функций из методов дерева для выбора функций, которые нужно отбросить.
Для ясности это означает:
- цикл по гиперпараметрам для текущего метода дерева
- для каждого набора параметров выполнить рекурсивное исключение признаков, чтобы получить оптимальное количество признаков
- сообщить «оценку» (например, точность)
- определить, какой набор параметров дал лучший результат
В данный момент этот код работает нормально, но я получаю предупреждение об обесценивании при использовании estimator_params. Вот текущий код:
# set up list of parameter dictionaries (better way to do this?)
depth = [1, 5, None]
weight = ['balanced', None]
params = []
for d in depth:
for w in weight:
params.append(dict(max_depth=d,
class_weight=w))
# specify the classifier
estimator = DecisionTreeClassifier(random_state=0,
max_depth=None,
class_weight='balanced')
# specify the feature selection method
selector = RFECV(estimator,
step=1,
cv=3,
scoring='accuracy')
# set up the parameter search
clf = GridSearchCV(selector,
{'estimator_params': param_grid},
cv=3)
clf.fit(X_train, y_train)
clf.best_estimator_.estimator_
Вот предупреждение об обесценивании полностью:
home/csw34/git/scikit-learn/sklearn/feature_selection/rfe.py:154: DeprecationWarning:
The parameter 'estimator_params' is deprecated as of version 0.16 and will be removed in 0.18. The parameter is no longer necessary because the value is set via the estimator initialisation or set_params method.
Как мне добиться того же результата без использования estimator_params в GridSearchCV для передачи параметров через RFECV в оценщик?