在multilabel classification设置中,sklearn.metrics.accuracy_score
仅计算子集精度(3):即为样本预测的标签集必须与相应的标签集完全匹配在y_true。
这种计算准确性的方式有时被命名,可能不那么模糊,完全匹配率(1):
有没有办法让其他典型的方法来计算scikit-learn的准确度,即
(如(1)和(2)中所定义,并且不那么含糊地称为汉明分数(4)(因为它与汉明损失密切相关),或基于标签 精度的) ?
(1)Sorower,Mohammad S.“A literature survey on algorithms for multi-label learning.”俄勒冈州立大学,Corvallis(2010)。
(2)Tsoumakas,Grigorios和Ioannis Katakis。 “Multi-label classification: An overview.”信息学系,希腊塞萨洛尼基亚里士多德大学(2006年)。
(3)Ghamrawi,Nadia和Andrew McCallum。 “Collective multi-label classification.”第14届ACM信息和知识管理国际会议论文集。 ACM,2005。(4)Godbole,Shantanu和Sunita Sarawagi。 “Discriminative methods for multi-labeled classification.”知识发现和数据挖掘的进展。 Springer Berlin Heidelberg,2004。22-30。
答案 0 :(得分:1)
对于2019年读书的人,现在您可以使用sklearn.metrics.hamming_loss
:
>>> import numpy as np
>>> hamming_loss(np.array([[0, 1], [1, 1]]), np.zeros((2, 2)))
0.75
在Numpy中也很容易计算:
# Exact Match ratio:
np.all(y_pred == y_true, axis=1).mean()
# Hamming Score:
(y_pred == y_true).mean()
答案 1 :(得分:0)
一个简单的汇总函数:
import numpy as np
def hamming_score(y_true, y_pred):
return (
(y_true & y_pred).sum(axis=1) / (y_true | y_pred).sum(axis=1)
).mean()
hamming_score(y_true, y_pred)
# 0.375