2017-09-15 46 views
0

我實現了一個隨機森林算法來預測一些東西。 算法後,我的數據庫表:SparkSQL四倍表

id  order  order_forecast 
----------------------------------------------- 
1  yes   yes 
2  yes   no 
3  no   yes 
4  no   no 
5  yes   yes 
6  no   yes 
7  yes   no 
8  yes   yes 
9  yes   yes 

,現在我想建立某種形式的四格表的檢查,如果隨機森林是正確的。

例如

 yes    no 
    ------------------------------- 
yes | 4    2 
no | 2    1 


Correct classified: 5 
Wrong classified: 4 
Accuracy: 55,55% 
Error: 44,44% 

是否有任何功能或任何簡短的方法來做到這一點? 正如我所說我在瀏覽器界面上工作,我不知道我正在使用哪個DBMS,但我發現窗口功能正在工作。

回答

0

如果你有一個表,然後:

select order, order_forecast, count(*) 
from results r 
group by order, order_forecast; 

這將產生四排,而不是兩個。然後,您可以在應用程序中執行額外的計算。

爲了讓您的特定格式的數據,然後使用:

select order, 
     sum(case when order_forecast = 'yes' then 1 else 0 end) as yes, 
     sum(case when order_forecast = 'no' then 1 else 0 end) as no 
from results 
group by order; 

或者只是得到直接的正確性:

select order, 
     sum(case when order_forecast = order then 1 else 0 end) as correct, 
     sum(case when order_forecast = order then 0 else 1 end) as incorrect 
from results 
group by order; 

order是一列一個非常糟糕的名字,因爲它是一個SQL關鍵字。

+0

謝謝,我會在星期一上班的時候嘗試一下,不用擔心我只是把這個專欄翻譯成英文,在DB上它叫'auftrag' – mafin