使用sklearn.linear_model.LogisticRegression
来拟合训练数据集后,我想获得训练数据集的成本函数值和交叉验证数据集。
是否可以让sklearn
简单地给我最小化函数的值(在最小值)?
该功能在http://scikit-learn.org/stable/modules/linear_model.html#logistic-regression的文档中说明(取决于您选择的正则化)。但我无法找到如何让sklearn
给我这个功能的价值。
我原本认为这就是LogisticRegression.score
的作用,但这只会返回准确性(预测分类正确的数据点的比例)。
我找到sklearn.metrics.log_loss
,但当然这不是最小化的实际功能。
答案 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)
我有以下建议。 您可以将逻辑回归的损失函数代码编写为函数。 获得数据的预测标签后,您可以撤销定义的函数来计算成本值。