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
问题:
-
let _date before 2020-11-01 as our training period, and
the date after that as the test period. Calculate the positive rate in these two date range
公式:阳性率=阳性数/(阳性数+阴性数)
正 = 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
我们必须将数据分成训练集和测试集,并在 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 |
问题:
-
let _date before 2020-11-01 as our training period, and the date after that as the test period. Calculate the positive rate in these two date range
公式:阳性率=阳性数/(阳性数+阴性数)
正 = 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