yme*_*eng 9 python scikit-learn logistic-regression
我们将sklearn从旧的0.13-git升级到0.14.1,并发现我们的逻辑回归分类器的性能发生了很大变化.用相同数据训练的两个分类器具有不同的系数,因此经常给出不同的分类结果.
作为实验,我使用5个数据点(高维)训练LR分类器,结果如下:
0.13的git:
clf.fit(data_test.data, y)
LogisticRegression(C=10, class_weight='auto', dual=False, fit_intercept=True,
intercept_scaling=1, penalty='l2', tol=0.0001)
np.sort(clf.coef_)
array([[-0.12442518, -0.11137502, -0.11137502, ..., 0.05428562,
0.07329358, 0.08178794]])
Run Code Online (Sandbox Code Playgroud)
0.14.1:
clf1.fit(data_test.data, y)
LogisticRegression(C=10, class_weight='auto', dual=False, fit_intercept=True,
intercept_scaling=1, penalty='l2', random_state=None, tol=0.0001)
np.sort(clf1.coef_)
array([[-0.11702073, -0.10505662, -0.10505662, ..., 0.05630517,
0.07651478, 0.08534311]])
Run Code Online (Sandbox Code Playgroud)
我会说差异很大,在10 ^( - 2)的范围内.显然,我在这里使用的数据并不理想,因为特征的维度远大于条目的数量.但是,实际情况也是如此.它与功能选择有关吗?如何使结果与以前一样?我理解新结果不一定比以前更差,但现在重点是尽可能使它们保持一致.谢谢.
从版本 0.13变更日志开始:
\n\n\n修复了
\nclass_weightAndreas M\xc3\xbcller 对 svm.LinearSVC 和 Linear_model.LogisticRegression 的支持。的含义class_weight被错误地颠倒了\n较高的权重意味着在早期版本中给定类别的积极性较低。
不过,更新的描述适用于 0.13 版本,而不是更高版本。您提到您使用了 version 0.13-git,也许您使用了 0.13 版本的预发行版,其中该功能未经过编辑:这样,更新相对于您的问题来说可能有意义。
通过查看您的系数,它们在新版本中较低,这与更新的描述表明权重最初降低是有一定道理的。
\n您可能想要更改新的LogisticRegression(...)参数并尝试进行一些调整。