在一种材料中,我找到了一个公式来计算精度,如下所示:
这里a和b是一组值。在互联网上进行了大量搜索后,我发现模数表示余数或绝对值。在这里,我将模数作为绝对值,上面公式的python代码如下
import numpy as np
def intersection(lst1, lst2):
return list(set(lst1) & set(lst2))
a = [7,21]
b = [11, 7, 27, 21]
a_intersect_b=intersection(a,b)
print(" a_intersect_b : ",a_intersect_b)
mod_a_intersect_b=[abs(x) for x in a_intersect_b]
print("|a_intersect_b| : ",mod_a_intersect_b)
mod_a=[abs(x) for x in a]
print("|a| : ",mod_a)
numerator=np.array(mod_a_intersect_b, dtype=np.float)
denominator=np.array(mod_a, dtype=np.float)
print(" mod_a_intersect_b / mod_a : ", numerator/denominator)
在这里我得到2个输出值。但是在材料上和一般而言,精度是一个值。如果列表大小增加,则输出值也会增加。最后我发现我误解了模数的含义。指导我根据上述公式获取单精度值。预先感谢。
注意:在公式a和b中是一组值。所以我在代码中使用了列表。如果我使用其他选项在python中提到一组值,也可以指导我,那么我可以获得单精度值。
答案 0 :(得分:2)
如gis注释中的@Hoog所述,在 precision 情况下的模运算意味着某个集合的cardinality(只是集合中的多个元素),因此您可以定义精度如下:
def precision(a, b):
"""
a: set, relevant items
b: set, retrieved items
returns: float, precision value
"""
return len(a & b) / len(a)
len(a)
返回集合元素的基数,即基数|a|
操作。
如果a
,b
是列表,请先将它们包装成组:
def precision(a, b):
"""
a: set, relevant items
b: set, retrieved items
returns: float, precision value
"""
a, b = set(a), set(b)
return len(a & b) / len(a)
此外,在数据科学和相关领域中,精度是一种计算比率'true positives' / ('true positives' + 'false positives')
的指标。用其他术语描述的是同一件事-但是标准的标准实现无法帮助您。