在scikit-learn

时间:2015-12-24 06:26:09

标签: python machine-learning scikit-learn

我正在使用python scikit-learn库进行分类。

作为特征选择步骤,我想使用RandomizedLogisticRegression()。

因此,为了通过交叉验证找到C的最佳值,我使用了LogisticRegressionCV(惩罚=' l1',求解器=' liblinear')。 但是,在这种情况下,所有系数都是0。 使用l2惩罚工作没有问题。此外,具有l1惩罚的单次运行LogisticRegression()似乎可以给出适当的系数。

我使用RandomizedLasso和LassoCV()进行解决,但我不确定将LASSO用于二进制类标签是否合适。

所以我的问题就是这些。

  1. 在我的情况下使用LogisticRegressionCV()会有问题吗?
  2. 除了GridSearchCV()之外,还有另一种方法可以找到逻辑回归的最佳C_值吗?
  3. 是否可以将LASSO用于二进制(非连续)分类?

1 个答案:

答案 0 :(得分:2)

根据你的描述,我可以说l1正则化项的系数在你需要减少的情况下很高。

当系数非常高时,正则化项比误差项更重要,因此您的模型变得非常稀疏且无法预测。

我检查了LogisticRegressionCV,并说它将使用Cs参数从1e-4到1e4进行搜索。文档说,为了获得较低的正则化系数,如果提供整数,则需要具有更高的Cs。或者,您可以自己提供正则化系数的倒数作为列表。

因此,请使用Cs参数并尝试降低正则化系数。