【问题标题】:imblearn smote+enn under sampled the majority classimblearn smote+enn 对多数类的采样不足
【发布时间】:2019-08-23 00:47:20
【问题描述】:

我有一个不平衡的数据集,当我尝试使用 SMOTEENN 平衡他时,多数类的数量减少了一半

我尝试使用所有提供的选项更改“sampling_strategy”参数,但无济于事

from imblearn.combine import SMOTEENN

sme = SMOTEENN()
X_res, y_res = sme.fit_resample(X_train, y_train)

print(f'Original train dataset shape: {Counter(y_train)}')
# Original train dataset shape: Counter({1: 2194, 0: 205})

print(f'Resampled train dataset shape: {Counter(y_res)}\n')
# Resampled train dataset shape: Counter({0: 2117, 1: 1226})

【问题讨论】:

    标签: python machine-learning dataset balance imblearn


    【解决方案1】:

    如果您查看文档 SMOTEENN (https://imbalanced-learn.readthedocs.io/en/stable/generated/imblearn.combine.SMOTEENN.html#imblearn.combine.SMOTEENN ):

    使用 SMOTE 和 Edited Nearest Neighbours 组合过采样和欠采样。

    如果您想为每个班级获得偶数,您可以尝试使用其他技术,例如 over_sampling.SMOTE

    例如:

    from sklearn.datasets import make_classification
    from imblearn.combine import SMOTEENN
    from imblearn.over_sampling import SMOTE
    from collections import Counter
    
    X, y = make_classification(n_samples=5000, n_features=2, n_informative=2,
                               n_redundant=0, n_repeated=0, n_classes=2,
                               n_clusters_per_class=1,
                               weights=[0.06, 0.94],
                               class_sep=0.1, random_state=0)
    
    
    sme = SMOTEENN()
    X_res, y_res = sme.fit_resample(X, y)
    
    print(f'Original train dataset shape: {Counter(y)}')
    # Original train dataset shape: Counter({1: 4679, 0: 321})
    
    print(f'Resampled train dataset shape: {Counter(y_res)}\n')
    # Resampled train dataset shape: Counter({0: 3561, 1: 3246})
    
    sme = SMOTE()
    X_res, y_res = sme.fit_resample(X, y)
    
    print(f'Original train dataset shape: {Counter(y)}')
    # Original train dataset shape: Counter({1: 4679, 0: 321})
    
    print(f'Resampled train dataset shape: {Counter(y_res)}\n')
    # Resampled train dataset shape: Counter({0: 4679, 1: 4679})
    

    【讨论】:

    • 在您的示例中,多数人的大小减少了,并且非常接近少数人的大小,这在我的示例中不会发生,即使参数 sampling_strategy = 1.0
    猜你喜欢
    • 2018-01-13
    • 2019-10-01
    • 1970-01-01
    • 2018-12-27
    • 2021-06-28
    • 2017-03-27
    • 2020-07-05
    • 2018-12-02
    • 2019-05-24
    相关资源
    最近更新 更多