Последовательность шагов в конвейере - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь объединить SMOTE и GridSearchCV. Я использую объект Starified K-fold с трубкой с именем my_pipe . Конвейер предназначен для:

  1. Развертывания минимально-максимального масштабирования для каждого сгиба.
  2. Превышение выборочного класса меньшинства в текущем сгибе с использованием SMOTE.
  3. Запуск логистической регрессии () в текущем сгибе.
  4. Вышеуказанные шаги помещаются в GridSearchCV для поиска оптимальной регуляризации.
skf = StratifiedKFold(n_splits=4, shuffle = True, random_state = 45)
my_pipe=Pipeline([('minmaxscaler', MinMaxScaler()),('smote',SMOTE()),('logisticregression',LogisticRegression())])
params = {"C":np.logspace(-3,3,7), "penalty":["l1","l2"]}
my_grid={'logisticregression__' + key: params[key] for key in params} 

Далее следует метод подгонки, как показано ниже

logistic_clf = GridSearchCV(my_pipe, param_grid = my_grid, cv = skf, scoring='roc_auc',verbose = 0,n_jobs=10,return_train_score=False)
logistic_clf.fit(X_train, y_train)

Хотя код работает без каких-либо сообщений об ошибках, у меня есть следующие вопросы:

  1. Является ли Scaler , за которым следует SMOTE правильно, или это наоборот?
  2. Когда я запускаю метод подгонки lg_clf.predict (X_test) , как я могу получить доступ к скейлеру, используемому в gridserchCV?
  3. ИЛИ Должен ли я просто запустить скалер перед входом в GridsearchCV ()
...