从scikit-学习逻辑回归模型计算残余偏差

时间:2018-06-21 18:57:11

标签: python scikit-learn regression logistic-regression

有什么方法可以计算出scikit-learn logistic regression model的残余偏差吗?这是R模型摘要的标准输出,但是我在sklearn的任何文档中都找不到。

3 个答案:

答案 0 :(得分:2)

  1. 如@ russell-richie所建议,应为model.predict_proba
  2. 不要忘记函数normalize=False中的参数metrics.log_loss()返回每次采样损失的总和。

因此,要完成@ingo的答案,并获得sklearn.linear_model.LogisticRegression的模型偏差,可以计算:

def deviance(X, y, model):
    return 2*metrics.log_loss(y, model.predict_proba(X), normalize=False)

答案 1 :(得分:1)

您无法在scikit-learn中完成此操作,但请查看 statsmodels git filter-branch --commit-filter 'git commit-tree -S "$@";' HEAD API

答案 2 :(得分:1)

实际上,您可以。偏差与交叉熵密切相关,交叉熵在sklearn.metrics.log_loss中。偏差仅为2 *(loglikelihood_of_saturated_model-loglikelihood_of_fitted_model)。 Scikit学习可以(没有较大的调整)只能处理单个实例的分类,因此饱和模型的对数似然将为零。 log_loss返回的交叉熵是负对数似然率。因此,差异只是

def deviance(X, y, model):
    return 2*metrics.log_loss(y, model.predict_log_proba(X))

我知道这是一个很晚的答案,但是我希望它能有所帮助。