对于Scikit-learn我有
c = 0.001
lr = LogisticRegression(C=c,penalty='l1')
en = ElasticNet(l1_ratio = 1, alpha=1./c)
sgdc = SGDClassifier(loss='log', alpha=1./c,penalty='l1', l1_ratio=1)
对于LogisticRegression C 是反正则化因子,因此它表示 1 / lambda 。 在ElasticNet的情况下, alpha 是 C 的倒数。当我将 en 和 sgdc 的训练模型和预测分数与进行比较时,会出现问题 LR 即可。
在所有情况下,准确度都要低得多。当我尝试计算roc_auc_score时,我得到一个异常警告,说预测结果都是1级。显然这没有意义,因为使用LogisticRegression我可以获得有意义的结果。
我在Scikit上看到ElasticNet上的页面 - 了解lambda = a + b和l1_ratio = a /(a + b)的位置。因此,当l1_ratio = 1时,1 / lambda应该在LogisticRegression中表现为C.
我的问题是我是否错误地设置了ElasticNet()和SGDClassifier()?如果是这样,我如何设置它们以便模拟LogisticRegression?