跳过正文
  1. posts/

sklearn的LogisticRegressionCV

·227 字·1 分钟
丁子元
作者
丁子元
曾经做过业务开发、CICD。对homelab有兴趣。
from sklearn.linear_model import LogisticRegressionCV

lr = LogisticRegressionCV(Cs=C_RANGE, cv=5, scoring="neg_log_loss")
lr.fit(X_train_full, y_train_full)
lr.scores_

LogisticRegressionCV的求解器中基本都会用到warm-start,既下一次的拟合过程中,参数会被上一次的拟合过程影响。这是它速度快的原因。这也解释了为什么上面的代码和下面的代码跑出来的结果不一样:

ll=[]
for C in C_RANGE:
    lm = LogisticRegressionCV(Cs=[C], cv=5, scoring="neg_log_loss")
    lm.fit(X_train_full, y_train_full)
    ll.append(lm.scores_[1])
print(ll)

当然,使用第一个C值拟合时的结果是一样的,因为这时候warm-start并没有”上一轮“。

参数列表中加入 solver="liblinear" 可以让上面两种方法达成同样的结果,但是这种求解器没有热启动,所以fit过程非常慢。