【问题标题】:Calculate residual deviance from scikit-learn logistic regression model从 scikit-learn 逻辑回归模型计算剩余偏差
【发布时间】:2018-12-01 05:07:35
【问题描述】:

有没有办法计算scikit-learn logistic regression model 的剩余偏差?这是 R 模型摘要的标准输出,但我在 sklearn 的任何文档中都找不到它。

【问题讨论】:

    标签: python scikit-learn regression logistic-regression


    【解决方案1】:

    您无法在 scikit-learn 中执行此操作,但请查看 statsmodelsGLMResults(API)

    【讨论】:

      【解决方案2】:

      其实可以的。偏差与交叉熵密切相关,交叉熵在sklearn.metrics.log_loss 中。偏差只是 2*(loglikelihood_of_aturated_model - loglikelihood_of_fitted_model)。 Scikit learn 可以(无需更大的调整)仅处理单个实例的分类,因此饱和模型的对数似然将为零。 log_loss 返回的交叉熵是负对数似然。因此,偏差很简单

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

      我知道这是一个很晚的答案,但无论如何我希望它会有所帮助。

      【讨论】:

      • 应该是model.predict_log_proba,还是只是.predict_proba? log_loss 文档表明第二个参数y_pred 应该是概率...
      • 正确,这里的文档不具体。应该是log_proba
      • 文档说明第二个参数应该是概率,而不是日志(概率)。
      【解决方案3】:
      1. 按照@russell-richie 的建议,应该是model.predict_proba
      2. 不要忘记函数 metrics.log_loss() 中的参数 normalize=False 返回每​​个样本损失的总和。

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

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

      【讨论】:

        猜你喜欢
        • 2013-09-30
        • 2017-11-20
        • 2016-02-21
        • 2017-03-31
        • 2019-04-11
        • 2018-11-18
        • 2018-03-01
        • 2016-07-31
        • 2012-06-27
        相关资源
        最近更新 更多