我有2个Python列表要比较.
list1 = ['13.3. Risk', '13.3.1. Process', 'Change']
list2 = ['Change', '13.3. Risk', '13.3.1. Process']
我想知道元素的顺序有多精确.
如果我逐项查看,巧合的是,它是0,因为第一个失败了.
但如果你仔细看,就会发现第一个元素失败了.其余的都井然有序.所以巧合,或者更好地解释:准确度/精确度为66.66%
我try 了三件事:
Element by element
coincidences= [i == j for i, j in zip(list1, list2)]
percentaje= 100 * sum(coincidences) / len(list1)
在本示例中,这导致0%.
Levenstein distance
我将列表转换为带有连接的字符串并计算Levenstein距离
from Levenshtein import distance
str1 = ','.join(list1)
str2 = ','.join(list2)
lev_dist = distance(str1, str2)
percentaje= 100 * (1 - lev_dist / max(len(str1), len(str2)))
结果为39.80582524271845%
Spearman Coef
from scipy.stats import spearmanr
pos_list1 = {elem: i for i, elem in enumerate(list1)}
range_list2 = [pos_list1 [elem] for elem in list2]
coef, p_valor = spearmanr(list(range(len(list1))), rango_lista2)
print(f'Spearman coef is: {coef}')
结果为-0.5
所以正如你所看到的,我没有得到预期的66.66% 还有其他方法可以做到吗?