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

时间:2016-03-12 11:12:14

标签: python machine-learning scikit-learn logistic-regression scikits

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

是否可以让sklearn简单地给我最小化函数的值(在最小值)?

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

我原本认为这就是LogisticRegression.score的作用,但这只会返回准确性(预测分类正确的数据点的比例)。

我找到sklearn.metrics.log_loss,但当然这不是最小化的实际功能。

3 个答案:

答案 0 :(得分:8)

不幸的是,没有"很好"这样做的方法,但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

答案 1 :(得分:0)

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

import numpy as np

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

其中reg是您学到的LogisticRegression

答案 2 :(得分:0)

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