ElasticNet和SGDClassifier(loss =' log')与l1产生与LogisticRegression截然不同的结果(惩罚=' l1')

时间:2014-11-14 04:58:35

标签: scikit-learn

对于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?

0 个答案:

没有答案