我們必須將資料分成訓練集和測驗集,并在 SQL 中計算真陽性率指標。我們有直到 ID 1000 的資料,下面是示例表 _score
| ID | _日期 | 預言 | 實際的 |
|---|---|---|---|
| 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 |
問題:
-
將2020-11-01之前的_date作為我們的訓練期,之后的日期作為測驗期。計算這兩個日期范圍內的陽性率
公式:陽性率=陽性數/(陽性數 陰性數)
正 = 1 負 = 0
請幫助計算單個查詢中的 TPR 率,我對在訓練和測驗集中過濾這些記錄感到困惑。
預期輸出:
| ID | 標簽 | 陽性率 |
|---|---|---|
| 1 | 訓練資料 | X |
| 2 | 測驗資料 | 是 |
我們需要一個列中的訓練集和測驗集資料的正率列,我們必須按照上面提到的日期值進行拆分。我們將只有 2 行,一個用于訓練集,另一個用于測驗集。
訓練資料:日期早于 2020-11-01 測驗資料:日期晚于 2020-11-01
- 如果需要任何編輯或澄清問題,請提出評論。
uj5u.com熱心網友回復:
你可以像這個拳頭一樣創建一個子選擇,對 id 和 label 的資料進行排序,并對正數和負數進行計數。
然后你使用 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`身份證 | 標簽 | SUM(正) * 1.0/ (SUM(正) SUM(負)) -: | :------------ | --------------------------------------------------: 1 | 訓練資料 | 0.66667 2 | 測驗資料 | 0.00000
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/463076.html
