有效检查相邻精度(组成员资格?)
Efficiently check for adjacent accuracy (group membership?)
我正在对具有 6 个级别的机器学习分类任务进行评估:A1, A2, B1, B2, C1 and C2
。可以假定这些类别是有序的,即它们可以排序。作为我评估的一部分,我想衡量我的分类器在 'actual' 级别的 1 内对文本进行分类的准确程度。我将其称为 'adjacent accuracy'。例如,如果文本实际排名 B2
,那么相邻准确的结果将是 B1
、B2
和 C1
.
我有很多数据要处理,所以我想有一种非常有效的方法来检查相邻精度。下面列出了我的最佳方法 (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),如果这样可以以某种方式提高性能。
有什么想法吗?
in
不是很快,尤其是 str
,您可以使用简单的 int
并比较值:
A1, A2, B1, B2, C1, C2 = range(6)
def isAdjacent(actual, classifierOutput):
return actual - 2 < classifierOutput < actual + 2
例如,如果您有 A2
文本,则实际值为 0
,因此 isAdjacent
必须 return True
如果 classifierOutput
介于 0 - 2 = -2
和 0 + 2 = 2
之间,因此 0
或 1
.
我正在对具有 6 个级别的机器学习分类任务进行评估:A1, A2, B1, B2, C1 and C2
。可以假定这些类别是有序的,即它们可以排序。作为我评估的一部分,我想衡量我的分类器在 'actual' 级别的 1 内对文本进行分类的准确程度。我将其称为 'adjacent accuracy'。例如,如果文本实际排名 B2
,那么相邻准确的结果将是 B1
、B2
和 C1
.
我有很多数据要处理,所以我想有一种非常有效的方法来检查相邻精度。下面列出了我的最佳方法 (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),如果这样可以以某种方式提高性能。
有什么想法吗?
in
不是很快,尤其是 str
,您可以使用简单的 int
并比较值:
A1, A2, B1, B2, C1, C2 = range(6)
def isAdjacent(actual, classifierOutput):
return actual - 2 < classifierOutput < actual + 2
例如,如果您有 A2
文本,则实际值为 0
,因此 isAdjacent
必须 return True
如果 classifierOutput
介于 0 - 2 = -2
和 0 + 2 = 2
之间,因此 0
或 1
.