对于二进制预测问题,如果真标签为0,则正确预测的增益为t_0,错误的PRE的损失为f_0。1,T_1,F_1。
每个样本都有其唯一的T_0,T_1,F_0,F_1。我认为我需要更改评估指标,但我不知道该怎么做。因为大多数自定义评估公制输入(pred,true标签),您知道如何解决问题?
我认为,一项工作就是简单地将四个值 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] #Add gain for T_0
else:
total_sum-=y_pred[idx][1][1] #Subtract loss for F_0
else:
if y_pred[idx]==1:
total_sum+=y_pred[idx][1][2] #Add gain for T_1
else:
total_sum-=y_pred[idx][1][3] #Subtract loss for F_1
return total_sum
我认为也可能有一种有效的方法可以使用numpy
进行此操作,如果找到某些内容,我将更新答案。但是,只要正确地将价值添加到地面真理,这应该可以正常工作。