首页 > 解决方案 > 如何在具有多个目标变量(多输出)的样本数据上过度/不足?

问题描述

假设我有一个具有 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 技术不会采用多个目标并引发大量错误。有人可以帮我解决这个问题。

标签: pythonpython-3.xclassificationsamplingsmote

解决方案


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

如何重新采样数据集:

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)

推荐阅读