Комбинированный GridSearch RFECV: краткое взаимодействие / передача данных? - PullRequest
0 голосов
/ 09 июля 2020

В настоящее время я применяю очень похожий случай, как в примере кода ниже, для комбинации GridSearch CV (аналогично RandomizedSearchCV), который работает довольно хорошо. В обоих случаях я применяю KFold-CV с shuffle = False, чтобы применить определенную группировку. Тем не менее, я не уверен в двух деталях CV-Folds:

1.) Когда данные из GridSearchCV разделяются на складки, тогда только все разделенные данные передаются в RFECV, а затем - снова установите split соответственно, или как это работает? Например, ff GS имеет cv=5, затем 4/5 данных передается в RFECV, а затем, если cv=5 снова разделяется, так что размер набора в каждом сгибе в RFECV будет 4/5*4/5 от исходный размер данных?

2.) Коэффициент разделения может также влиять на производительность? Как узнать о каждом лучшем cv-номере и соотношении?

Следующий раздел кода взят по этой ссылке: Объединение рекурсивного исключения функций и поиска по сетке в scikit-learn

from sklearn.datasets import make_classification
from sklearn.feature_selection import RFECV
from sklearn.grid_search import GridSearchCV, RandomizedSearchCV
from sklearn.ensemble import RandomForestClassifier
from scipy.stats import randint as sp_randint

# Build a classification task using 5 informative features
X, y = make_classification(n_samples=1000, n_features=25, n_informative=5, n_redundant=2, n_repeated=0, n_classes=8, n_clusters_per_class=1, random_state=0)

grid = {"estimator__max_depth": [3, None],
        "estimator__min_samples_split": sp_randint(1, 11),
        "estimator__min_samples_leaf": sp_randint(1, 11),
        "estimator__bootstrap": [True, False],
        "estimator__criterion": ["gini", "entropy"]}

estimator = RandomForestClassifier()
selector = RFECV(estimator, step=1, cv=4)
clf = RandomizedSearchCV(selector, param_distributions=grid, cv=7)
clf.fit(X, y)
print(clf.grid_scores_)
print(clf.best_estimator_.n_features_)
...