【发布时间】:2018-12-01 05:07:35
【问题描述】:
有没有办法计算scikit-learn logistic regression model 的剩余偏差?这是 R 模型摘要的标准输出,但我在 sklearn 的任何文档中都找不到它。
【问题讨论】:
标签: python scikit-learn regression logistic-regression
有没有办法计算scikit-learn logistic regression model 的剩余偏差?这是 R 模型摘要的标准输出,但我在 sklearn 的任何文档中都找不到它。
【问题讨论】:
标签: python scikit-learn regression logistic-regression
您无法在 scikit-learn 中执行此操作,但请查看 statsmodels、GLMResults(API)
【讨论】:
其实可以的。偏差与交叉熵密切相关,交叉熵在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。
model.predict_proba
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)
【讨论】: