如何实现不同的班权重

2024-05-23 19:03:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是句子分类,一个两类预测问题:句子属于“1”类还是“0”类?为了解决这个问题,我使用CNN。在

然而,我想强迫模型更多地惩罚类“1”上的错误,因为对我来说,模型可靠地预测类“1”更重要,即类“0”的误报是可以容忍的。在

为此,我改变了成本函数。每当出现错误并且错误发生在类“1”上时,返回值2,否则返回1。如果没有错误,则返回0。如果预测值为“0”,那么这应该会导致成本增加,但与相反的情况相比,它应该是“1”。在

这是我的密码(抱歉搞砸了)。在

def class_imbalanced_errors(self,y_pred,y):
    expr=lambda a,b: T.switch(T.neq(a,b),T.switch(T.neq(a,T.constant(1)),T.constant(1),T.constant(2)),T.constant(0))
    x,y = theano.scan(expr,sequences=[y,y_pred])
    return x

函数返回值为2、1或0的向量,具体取决于错误类型。这个向量的平均值就是最终的成本。在

我的问题:

这是给这两个类赋予不同权重的正确方法吗? 我的实现似乎正确吗?在


Tags: 函数模型错误分类向量cnnneq句子