每个样本的独特真/假损失

对于二元预测问题,如果真实标签是0,正确预测的收益为T_0,错误预测的损失为F_0。对于标签1,相应的收益和损失为T_1和F_1。

每个样本都有其独特的T_0、T_1、F_0、F_1。我认为我需要更改评估指标,但我不知道如何操作。因为大多数自定义评估指标只输入(预测值, 真实标签),你知道如何解决这个问题吗?


回答:

我认为一个解决办法是简单地将四个值T_0,T_1,F_0,F_1附加到真实标签本身。由于评估指标只在训练分类器时使用一次,你的目标可以实现。

假设你以某种方式将你的真实标签从

[1, 0, 1, 1, 0, 0]

更改为如下形式:

[ [1,[T_0, F_0, T_1, F_1]],  [0,[T_0, F_0, T_1, F_1]],  [1,[T_0, F_0, T_1, F_1]],  [1,[T_0, F_0, T_1, F_1]],  [0,[T_0, F_0, T_1, F_1]],  [0,[T_0, F_0, T_1, F_1]] ] 

即,每个真实标签值都附带一个由T_0,T_1,F_0,F_1组成的数组,对应于那个样本。

现在你可以这样定义你的指标:

def my_metric(y_pred,y_true):    tot_sum = 0.0    for idx in range(0,len(y_pred)):        if y_true[idx][0]==0:            if y_pred[idx]==0:                total_sum+=y_pred[idx][1][0]   #增加T_0的收益            else:                total_sum-=y_pred[idx][1][1]   #减去F_0的损失        else:            if y_pred[idx]==1:                total_sum+=y_pred[idx][1][2]   #增加T_1的收益            else:                total_sum-=y_pred[idx][1][3]   #减去F_1的损失    return total_sum

我认为使用numpy可能有更有效的方法来做这件事,如果我找到什么,我会更新答案。然而,只要正确地将值附加到真实标签上,这应该可以正常工作。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注