SQL 日期过滤器 |模型性能

SQL date Filter | Model Performace

我们必须将数据分成训练集和测试集,并在 SQL 中计算真阳性率指标。我们有直到 ID 1000 的数据,下面是示例 table _score

ID _date prediction actual
1 2020-02-01 0.81 1
2 2020-05-04 0.22 0
3 2020-01-18 0.84 1
4 2020-07-11 0.92 1
5 2020-12-31 0.44 0
6 2020-06-02 0.71 1
7 2020-03-02 0.11 0
1000 2020-11-22 0.61 0

问题:

公式:阳性率=阳性数/(阳性数+阴性数)

正 = 1 负 = 0

请帮助计算单个查询中的 TPR 率,我对在训练和测试集中过滤这些记录感到困惑。

预期输出:

ID label Positive Rate
1 Training Data X
2 Test Data Y

我们需要在单个列中同时包含训练集和测试集数据的阳性率列,我们必须按上述日期值拆分该列。我们将只有 2 行,一行用于训练集,另一行用于测试集。

列车数据:日期早于 2020-11-01 测试数据:2020-11-01

之后的日期

你可以像这样创建一个子选择,它对 id 和标签的数据进行排序,并计算正数和负数。

然后你使用 sunbquery 来获取你想要的数据

SELECT `ID`,`Label`, SUM(positive) * 1.0/ (SUM(positive)+SUM(negative))
FROM
(SELECT 
    IF(`_date` <= '2020-11-01',1,2) AS 'ID',
    IF(`_date` <= '2020-11-01','Training Data','Test Data') AS 'Label',
    IF(`actual` = 1,1,0) as positive ,
    IF(`actual` = 0,1,0) as negative 
FROM predictions) pred
GROUP BY `ID`,`Label`
ID | Label         | SUM(positive) * 1.0/ (SUM(positive)+SUM(negative))
-: | :------------ | -------------------------------------------------:
 1 | Training Data |                                            0.66667
 2 | Test Data     |                                            0.00000

db<>fiddle here