【问题标题】:Calculate accuracy of a dataset计算数据集的准确性
【发布时间】:2020-09-10 22:13:09
【问题描述】:

我有两张表(X 和 Y),例如,将足球运动员映射到球队。表 X 中的数据是可靠的,但我不确定表 Y 中数据的可靠性。表 X 有 3000 行,表 Y 有 1000 行。如何使用表 Y 中的数据作为真值集或超集来计算表 Y 中映射的准确度?

表 X

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

Y 表

PlayerID.   |Name      | Team
010         | Messi    | Man City
007         | Sancho   | Man Utd
006         | Pogba    | Man Utd
017         | De Bruyne| Man City
011         | Werner   | Liverpool
006         | Pogba    | Real Madrid

根据表 X,我们可以看到只有 playerID 006 和 017 是准确的。但是 playerID 006 部分准确,因为它映射到两个不同的球队。

【问题讨论】:

  • 请以表格文本形式提供示例数据和所需结果。我们不知道您的数据结构是什么样的。如果您需要 SQL 解决方案,请标记您正在运行的数据库:mysql、postgresql、oracle...?
  • 我刚加了。

标签: mysql pandas count statistics left-join


【解决方案1】:

您可以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 唯一标识两个表中的记录。

【讨论】:

    猜你喜欢
    • 2021-05-10
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2017-06-03
    • 2018-09-05
    • 2012-07-10
    • 2019-02-14
    • 2015-05-20
    相关资源
    最近更新 更多