【问题标题】:Using imbalanced-learn with Pandas DataFrame [closed]在 Pandas DataFrame 中使用不平衡学习 [关闭]
【发布时间】:2020-01-05 10:41:30
【问题描述】:

我的数据集非常不平衡。两个少数类别中的每一个都包含多数类别中样本的一半。我的 RNN 模型无法了解人口最少的类的任何信息。

我正在尝试使用 imbalanced-learn 库。例如:

sm = SMOTE(random_state=42, n_jobs=-1, k_neighbors=10)
X_train, y_train = sm.fit_resample(train.drop(['label], axis=1), train['label'])

如果train.drop(['label] 仅包含所用特征的值,则有效。问题是我的 DataFrame 包含一个包含字符串作为值的附加列:我不能删除它,因为这些字符串是我的 RNN 的输入。如果我放弃它,我将无法分辨这些字符串属于过采样数据集的哪一行。

有没有办法保留所有列并告诉函数使用哪些列进行过采样?

【问题讨论】:

    标签: python machine-learning deep-learning pytorch imbalanced-data


    【解决方案1】:

    如果字符串列是 RNN 的输入,那么假设您计划以某种方式对其进行编码(例如一次性编码),那么只需在过采样之前对该列进行编码,然后使用新编码的列运行过采样字符串列。

    【讨论】:

    • 谢谢。问题是,如果我用标签编码的 NumPy 数组替换字符串(以便每个字符对应一个整数),不平衡学习会抱怨:用序列设置数组元素
    • 我原则上可以将这些列拆分为多个列,每个列都有一个数字......有没有更好更快的解决方案?
    【解决方案2】:

    对于那些需要做类似事情的人,该库的合著者建议我使用SMOTENC,它还可以处理分类变量(如字符串)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 2018-02-27
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      相关资源
      最近更新 更多