如何 Over/Under 具有多个目标变量(多输出)的样本数据?

How to Over/Under Sample data with multiple target variable(Multi-Output)?

假设我有一个包含 2 个独立特征和 6 个相关特征的数据集,如下所示,其中 AA and BB 是独立的,A,B,C,D,E,F 是因变量。

AA        BB       A B C D E F
teacher   No       1 0 0 1 0 0
student   Yes      1 1 0 1 0 0
officer   Yes      0 0 1 0 0 0
engineer  Maybe    1 1 1 0 0 0
student   Sure     0 1 1 0 0 1
lawyer    Maybe    1 1 0 0 1 0
student   Yes      1 0 0 1 1 0
teacher   No       1 1 1 0 0 0
doctor    No       0 1 1 0 0 0
engineer  Maybe    1 0 0 1 1 0

如果假设我想通过上采样或下采样或过采样来平衡我的数据,我该怎么做?正常的 SMOTE 和 sklearn 技术不会采用多个目标并引发大量错误。有人可以帮我解决这个问题吗?

免责声明:重采样类/加权损失函数只有在使训练集更接近类的分布时才会改善你的结果测试集。在这种情况下首选加权损失函数。

如何对数据集重新采样:

class_counts = df['AA'].value_counts()
class_weights = len(class_counts)/class_counts
resampled_df = df.sample(
    n=class_counts.max()*len(class_counts),
    weights=df['AA'].map(class_weights), 
    replace=True)