计算数据集的准确性

问题描述

我有两个表(X和Y),例如将一个足球运动员映射到一个团队。表X中的数据可靠,但我不确定表Y中数据的可靠性。表X有3,000行,表Y有1,000行。如何通过将表Y中的数据用作真集或超集来计算表Y中的映射的精确度?

表X

cnames[indx - 1]

表Y

PlayerID   | Name      | Team
007        | Sancho    | Dortmund
010        | Messi     | Barcelona
011        | Werner    | Chelsea
001        | De Gea    | Man Utd
009        | Lewan..ki | Bayern Mun
006        | Pogba     | Man Utd
017        | De Bruyne | Man City
029        | Harvertz  | Chelsea
005        | Upamecano | Leipzig

根据表X,我们可以看到只有玩家ID 006和017是正确的。但是,playerID 006映射到两个不同的团队时,部分准确。

解决方法

您可以left join并使用条件逻辑来计算准确性。

在MySQL中,您可以这样表达:

select avg(y.playerID is not null) as accuracy_ratio
from x
left join y 
    on  y.playerID = x.playerID
    and y.name     = x.name
    and y.team     = x.team

这将为您提供介于01之间的值,该值表示准确率(如果需要百分比,可以将其乘以100)。

请注意,这某种程度上假设playerID唯一地标识了两个表中的记录。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...