scikit-learn и imblearn: GridSearchCV / RandomSearchCV также применяет предварительную обработку к набору валидации? - PullRequest
0 голосов
/ 28 апреля 2020

В настоящее время я использую sklearn для школьного проекта, и у меня есть несколько вопросов о том, как GridsearchCV применяет алгоритмы предварительной обработки, такие как PCA или Factor Analysis. Давайте предположим, что я выполняю задержку:

X_tr, X_ts, y_tr, y_ts = train_test_split(X, y, test_size = 0.1, stratify = y)

Затем я объявляю некоторые гиперпараметры и выполняю GridSearchCV (это будет то же самое, что и RandomSearchCV, но неважно):

params = {
    'linearsvc__C' : [...], 
    'linearsvc__tol' : [...],
    'linearsvc__degree' : [...]
}
clf = make_pipeline(PCA(), SVC(kernel='linear'))
model = GridSearchCV(clf, params, cv = 5, verbose = 2, n_jobs = -1)
model.fit(X_tr, y_tr)

Моя проблема Мой учитель сказал мне, что вы никогда не должны устанавливать алгоритм предварительной обработки (здесь PCA) на набор проверки в случае ak fold cv, но только на разделение поезда (здесь и разделение поезда, и разделение проверки являются подмножествами X_tr и конечно они меняются при каждом сгибе). Таким образом, если у меня есть PCA () здесь, он должен соответствовать части сгиба, используемой для обучения модели, и, в конце концов, когда я проверяю полученную модель на соответствие разделению валидации, предварительно обрабатываю ее, используя полученную модель PCA, сопоставляя ее с обучающим набором. Это гарантирует отсутствие утечек.

Признает ли это Sklearn?

И если это произойдет: предположим, что теперь я хочу использовать imblearn для выполнения передискретизации на несбалансированном наборе:

clf = make_pipeline(SMOTE(), SVC(kernel='linear'))

по-прежнему, по словам моего учителя, вы не должны также выполнять передискретизацию на разделении проверки, так как это может привести к неточной точности. Таким образом, вышеприведенное утверждение для PCA о преобразовании набора проверки во второй момент здесь не применимо. Sklearn / imblearn учитывает это также?

Большое спасибо заранее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...