有效地检查相邻的准确性(组成员身份?)

时间:2015-08-07 05:18:19

标签: python algorithm machine-learning evaluation

我正在对6个级别的机器学习分类任务进行评估:A1, A2, B1, B2, C1 and C2。可以假设这些类别是序数的,即它们可以被排序。作为评估的一部分,我想测量我的分类器在“实际”级别中对文本进行分类的准确程度。我将其称为“相邻精度”。例如,如果文本实际上排名为B2,那么相邻的准确结果将为B1B2C1

我需要处理大量数据,因此我希望能够以非常有效的方式检查相邻的准确度。我在下面列出了我最好的方法(python3),但我正在寻找任何建议来挤出更多的时间。

adjDict = {'A1':{'A1','A2'}, 'A2':{'A1','A2','B1'}, 'B1':{'A2','B1','B2'},
    'B2':{'B1','B2','C1'}, 'C1':{'B2','C1','C2'}, 'C2':{'C1','C2'}}

def isAdjacent ( actual, classifierOutput ) :
    return classifierOutput in adjDict[actual]

如果有必要,可以将级别重新定义为数字(1-6),如果这可能会以某种方式提升性能。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

in速度不是很快,尤其是使用str时,您可以使用简单int并比较值:

A1, A2, B1, B2, C1, C2 = range(6)

def isAdjacent (actual, classifierOutput):
    return actual - 2 < classifierOutput < actual + 2

例如,如果您有A2文字,则实际值为0,因此如果isAdjacent介于classifierOutput之间,则0 - 2 = -2必须返回true和0 + 2 = 2,因此必须是01