【发布时间】:2015-07-29 11:51:12
【问题描述】:
我想找到将输入集 ADS.PREDICTOR 分成同样大的组的 POINTCOUNT 值。参数POINTCOUNT 对于不同的预测变量可以有不同的值,所以我不想在代码中硬编码它。
不幸的是,下面的代码因ORA-30496: Argument should be a constant 而失败...我该如何克服这个问题(当然,除了带有硬编码阈值分位数的 300 行代码)?
define POINTCOUNT=300;
select
*
from (
select
percentile_disc(MYQUNTILE)
within group (
order by PREDICTOR ) as THRESHOLD
from ADS
inner join (
select (LEVEL - 1)/(&POINTCOUNT-1) as MYQUANTILE
from dual
connect by LEVEL <= &POINTCOUNT
)
on 1=1
)
group by THRESHOLD
我想画一条 ROC 曲线。该曲线将在 Excel 中绘制为 Oracle 中计算的点对 (X, Y) 之间的线性插值。
使用阈值计算每个点 (X, Y)。
如果每个相邻的 (X, Y) 对之间的距离是均匀的,我将获得给定数量的点对的 ROC 曲线的最佳近似值。
如果我将预测值的域切割成 N 个值,分隔第 1/N 个分位数,我应该得到一组相当好的阈值。
【问题讨论】:
-
这对于一些 plsql 和动态 ddl 是可行的,但我手头没有时间来写它。只需使用带有 execute_immediate 的 percentile_disc 拍摄选择,然后在集合或表格中捕获结果。