sklearn 具有不平衡类别的逻辑回归

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

我正在用 python 中的 sklearn 逻辑回归解决分类问题。

我的问题是一个普遍/通用的问题。 我有一个包含两个类/结果(正/负或 1/0)的数据集,但该集高度不平衡。 有 ~5% 的阳性和 ~95% 的阴性。

我知道有很多方法可以处理这样的不平衡问题,但还没有找到如何使用 sklearn 包正确实现的很好的解释。

到目前为止,我所做的是通过选择具有积极结果的条目和相同数量的随机选择的消极条目来构建平衡的训练集。 然后我可以将模型训练到这个集合,但我一直不知道如何修改模型以处理原始的不平衡群体/集合。

具体步骤是什么? 我已经翻遍了 sklearn 文档和示例,但没有找到很好的解释。

python scikit-learn classification
2个回答
24
投票

您是否尝试过传递给您的

class_weight="auto"
分类器?并非 sklearn 中的所有分类器都支持这一点,但有些分类器支持。检查文档字符串。

您还可以通过随机删除负例和/或对正例进行过采样(+可能添加一些轻微的高斯特征噪声)来重新平衡数据集。


11
投票

@agentscully 你读过下面的论文了吗,

[SMOTE](https://www.jair.org/index.php/jair/article/view/10302/24590)。 我发现同样的信息非常丰富。这是Repo的链接。 根据您如何平衡目标类别,您可以使用

  • 'auto':(在较新的版本 0.17 中已弃用)或“平衡”或自己指定类比例 {0: 0.1, 1: 0.9}。
  • “平衡”:此模式调整权重与类别频率成反比
    n_samples / (n_classes * np.bincount(y)

如果需要更多见解,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.