Стандартизация, избыточная выборка и GridSearchCV
Я использую код, указанный ниже.
#Import Required Libraries
from imblearn.over_sampling import SMOTE
from imblearn.over_sampling import RandomOverSampler
from imblearn.pipeline import Pipeline as imbPipeline
from sklearn import tree
from sklearn import preprocessing
params_grid = {
'max_leaf_nodes': list(range(2,100,5)),
'min_samples_split': [2, 3, 4,5,6,7,8,9],
'min_samples_leaf': list(range(5, 100,5)),
'max_depth':[2, 3, 4,5],
'criterion': ['gini', 'entropy']
}
skfolds = StratifiedKFold(n_splits=10,random_state=42)
pipe_clf = imbPipeline([
('standardize',preprocessing.StandardScaler()),
('oversample_smote', SMOTE(ratio='auto',random_state=42)),
('clf_dtree_Grid_SearchCV',model_selection.GridSearchCV(tree.DecisionTreeClassifier(random_state=42,class_weight='balanced'),param_grid=params_grid,cv=skfolds))
])
Мои вопросы:
1) Когда grid_search.fit(X_train_reduced, y_train)
выполняется, есть preprocessing.StandardScaler()
сделано только один раз или неоднократно? Я думаю, что это делается только один раз.
2) Когда grid_search.fit(X_train_reduced, y_train)
выполняется среднее значение и стандартное отклонение, рассчитанное по X_train_reduced
используется для стандартизации переменных для тренировочных сгибов и тестовых сгибов X_train_reduced
?
3) Когда grid_search.fit(X_train_reduced, y_train)
выполняется среднее значение и стандартное отклонение, рассчитанное по preprocessing.StandardScaler()
используется для стандартизации переменных для тренировочных сгибов и тестовых сгибов X_train_reduced
?
4) Когда grid_search.fit(X_train_reduced, y_train)
Как подтвердить, что передискретизация выполняется только для тренировочных складок? X_train_reduced
а не для тестовых складок X_train_reduced
?
4) Когда я побегу grid_search.predict(X_test_reduced, y_test)
,
- Значения среднего и стандартного отклонения получены из preprocessing.StandardScaler()
используется для стандартизации переменных в X_test_reduced
?
- Должен ли шаг передискретизации соответствовать preprocessing.StandardScaler()
быть опущенным?