sklearn逻辑回归与不平衡的类

时间:2013-02-13 21:06:25

标签: python scikit-learn classification

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

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

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

到目前为止,我所做的是通过选择具有正结果和相同数量的随机选择的否定条目的条目来构建平衡训练集。然后我可以将模型训练到这个集合,但我仍然坚持如何修改模型然后处理原始的不平衡人口/集合。

执行此操作的具体步骤是什么?我已经倾倒了sklearn文档和示例,并没有找到一个很好的解释。

2 个答案:

答案 0 :(得分:19)

您是否尝试过传递给class_weight="auto"分类器?并非sklearn中的所有分类器都支持此功能,但有些分类器可以支持。检查文档字符串。

此外,您可以通过随机删除负面示例和/或过度采样正面示例来重新平衡数据集(+可能会添加一些轻微的高斯特征噪声)。

答案 1 :(得分:4)

@agentscully您是否阅读了以下论文,

[SMOTE](https://www.jair.org/media/953/live-953-2037-jair.pdf)。 我发现同样非常有用。这是Repo的链接。 根据您如何平衡目标类,您可以使用

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

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