gpt4 book ai didi

scikit-learn - 使用自定义评分函数时,GridSearchCV 可以使用 predict_proba 吗?

转载 作者:行者123 更新时间:2023-12-01 06:26:34 25 4
gpt4 key购买 nike

我正在尝试使用自定义评分函数,该函数使用基本事实和 predict_proba y 数组计算多类对数损失。有没有办法让 GridSearchCV 使用这个评分函数?

def multiclass_log_loss(y_true, y_pred):
Parameters
----------
y_true : array, shape = [n_samples]
true class, intergers in [0, n_classes - 1)
y_pred : array, shape = [n_samples, n_classes]

Returns
-------
loss : float
"""
eps=1e-15
predictions = np.clip(y_pred, eps, 1 - eps)

# normalize row sums to 1
predictions /= predictions.sum(axis=1)[:, np.newaxis]

actual = np.zeros(y_pred.shape)
n_samples = actual.shape[0]
actual[np.arange(n_samples), y_true.astype(int)] = 1
vectsum = np.sum(actual * np.log(predictions))
loss = -1.0 / n_samples * vectsum
return loss

我看到有多个选项,score_func、loss_func 和 make_scorer。我尝试将 make_scorer 与 Greater_is_better=False 一起使用,并尝试使用 loss_func 参数,但它似乎仍然使用 .predict 方法。我怎样才能解决这个问题?

更新 - 如果我设置了 Needs_threshold=True,我会收到一个多类错误。我正确理解在这种情况下不支持多类吗?如果是,有人可以建议解决方法吗?

谢谢。

最佳答案

这个问题的最佳答案:
Pass estimator to custom score function via sklearn.metrics.make_scorer

可能有你需要的东西。可以定义一个将分类器作为参数的记分器 clf , 特征数组 X , 和目标 y_true ,并提供 clf.predict_proba() 的结果返回错误的评分函数的方法。作为提示,对于二进制分类,您可能需要使用
clf.predict_proba(X)[:,1]
这满足了我的需求(标准化的基尼系数)。出于某种原因,我无法获得 sklearn 的 metrics.make_scorer使用我需要概率的自定义函数。

关于scikit-learn - 使用自定义评分函数时,GridSearchCV 可以使用 predict_proba 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27908737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com