根据python pandas数据帧的两列中的值计算精度和召回率?

时间:2018-04-11 13:46:35

标签: python-3.x pandas precision-recall

我有以下格式的数据框:

Column 1 (Expected Output) | Column 2 (Actual Output)
[2,10,5,266,8]             |   [7,2,9,266]             
[4,89,34,453]              |   [4,22,34,453]

我想找到实际输入中预期的项目数。例如,对于第1行,预期输出和实际输出中只有2和266,这意味着精度= 2/5且召回= 2/5。

由于我有超过500行,我想找到某种公式来查找每行的精度和召回率。

1 个答案:

答案 0 :(得分:1)

像这样设置你的df:

df = pd.DataFrame({"Col1": [[2,10,5,266,8],[4,89,34,453]],
                   "Col2":[[7,2,9,266],[4,22,34,453]]})

您可以在以下位置找到匹配的值:

df["matches"] = [set(df.loc[r, "Col1"]) & set(df.loc[r, "Col2"]) for r in range(len(df))]

您可以从中计算精确度和召回率。

但请注意,您的示例不会考虑预期输出和实际输出列表中元素的排序,如果这很重要,此解决方案将会失效,并且如果“...”中存在重复的任何值的重复项预期产出“清单。