machine-learning - 如何在 scikit-learn LogisticRegression 中设置拦截缩放

标签 machine-learning classification regression scikit-learn regularized

我正在使用 scikit-learn 的 LogisticRegression 对象进行正则化二元分类。我已阅读有关 intercept_scaling 的文档,但我不明白如何智能地选择此值。

数据集如下所示:

  • 10-20 个特征,300-500 个重复
  • 高度非高斯分布,事实上大多数观测值为零
  • 输出类别的可能性不一定相同。在某些情况下,它们几乎是 50/50,而在其他情况下,它们更像是 90/10。
  • 通常 C=0.001 会提供良好的交叉验证结果。

该文档包含警告,指出拦截本身需要进行正则化,就像其他所有功能一样,并且 intercept_scaling 可用于解决此问题。但我该如何选择这个值呢?一个简单的答案是探索 Cintercept_scaling 的多种可能组合,并选择能够提供最佳性能的参数。但这个参数搜索将花费相当长的时间,如果可能的话我想避免这种情况。

理想情况下,我想使用截距来控制输出预测的分布。也就是说,我想确保分类器在训练集上预测“1 类”的概率等于训练集中“1 类”数据的比例。我知道在某些情况下会出现这种情况,但我的数据中并非如此。我不知道这是由于正则化还是由于输入数据的非高斯性质。

感谢您的建议!

最佳答案

当您尝试通过设置class_weight =“auto”对正类进行过采样时?这有效地对代表性不足的类别进行了过采样,并对多数类别进行了欠采样。

(current stable docs 有点令人困惑,因为它们似乎是从 SVC 复制粘贴的,并且没有针对 LR 进行编辑;这只是在前沿版本中进行了更改。)

关于machine-learning - 如何在 scikit-learn LogisticRegression 中设置拦截缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711304/

相关文章:

r - 使用 cob 包 : NA/NaN/Inf in foreign function call 通过特定点拟合约束曲线时出错

r - 使用 R 自动查找和乘以系数

python - 特征聚集 : How to retrieve the features that make up the clusters?

mapping - 关于与核函数和支持向量机相关的术语的具体查询

python - 如何使用任何分类器对每个数据点由一组浮点值组成的数据进行分类?

python - 使用 numpy 进行多元多项式回归

machine-learning - 如何结合频谱聚类的拆分运行以获得巨大的亲和性矩阵

python - 我可以获得指向 tensorflow 中张量部分的指针吗?

opencv - 对象分类,何时使用完整图像或提取的对象?

python - 使用 10 倍交叉验证时 sklearn 的特征大小