在数据不平衡的管道中进行交叉验证的正确方法

问题描述 投票:2回答:1

对于给定的不平衡数据,我为标准化和热编码创建了不同的管道

numeric_transformer = Pipeline(steps = [('scaler', StandardScaler())])
categorical_transformer = Pipeline(steps=['ohe', OneHotCategoricalEncoder()])

之后,将上面的管道保持在一个列转换器中>

from sklearn.compose import ColumnTransformer
preprocessor = ColumnTransformer(
    transformers=[
        ('num', numeric_transformer, numeric_features),
        ('cat', categorical_transformer,categorical_features)]

最后的管道如下

smt = SMOTE(random_state=42)
rf = pl1([('preprocessor', preprocessor),('smote',smt),
                      ('classifier', RandomForestClassifier())])

我正在对不平衡的数据进行流水线拟合,因此我将SMOTE技术以及预处理和分类器包括在内。由于不平衡,我想检查召回得分。

如下面的代码所示,是正确的方法吗?我正在召回0.98左右,这可能会导致模型过拟合。如果我有任何错误,有什么建议吗?

scores = cross_val_score(rf, X, y, cv=5,scoring="recall")
    

对于给定的不平衡数据,我为标准化创建了不同的管道,并进行了一种热编码的numeric_transformer = Pipeline(steps = [('scaler',StandardScaler())])...

machine-learning scikit-learn cross-validation imbalanced-data smote
1个回答
1
投票
在不平衡的环境中,重要的考虑是要确保每个简历折叠中有足够的少数族裔成员;因此,建议使用StratifiedKFold来强制执行该操作,即:
© www.soinside.com 2019 - 2024. All rights reserved.