如何评估 scikit 学习 LogisticRegression 的成本函数?

How to evaluate cost function for scikit learn LogisticRegression?

使用sklearn.linear_model.LogisticRegression拟合训练数据集后,我想获得训练数据集和交叉验证数据集的成本函数值。

是否可以 sklearn 简单地给出它最小化的函数的值(在拟合最小值时)?

该函数在 http://scikit-learn.org/stable/modules/linear_model.html#logistic-regression 的文档中说明(取决于选择的正则化)。但是我找不到如何让 sklearn 给我这个函数的值。

我原以为这就是 LogisticRegression.score 所做的,但只是 returns 准确度(其预测正确分类的数据点的分数)。

我找到了sklearn.metrics.log_loss,当然这不是真正被最小化的函数

遗憾的是没有"nice"方法,但是https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/logistic.py中有一个私有函数 _logistic_loss(w, X, y, alpha, sample_weight=None),因此您可以手动调用它

from sklearn.linear_model.logistic import _logistic_loss
print _logistic_loss(clf.coef_, X, y, 1 / clf.C)

其中 clf 是您学到的 LogisticRegression

我使用下面的代码来计算成本值。

import numpy as np

cost = np.sum((reg.predict(x) - y) ** 2)

其中 reg 是您学到的 LogisticRegression

我有以下建议。 您可以将逻辑回归损失函数的代码编写为一个函数。 得到你预测的数据标签后,你可以撤销你定义的函数来计算成本值。