0

我正在尝试使用 PROC ARBOR 为连续变量定义 bin。生成的树效果很好,我可以通过视觉探索找到 bin 限制,但我想提取这些 bin 并使用它们以自动方式离散化原始变量。这可能吗?

我的代码是:

%macro INTINPUTS;
    l_G_MERGE6_t1_monto6
%mend INTINPUTS;
proc arbor data=labo2.J_TABLA_MODELO_LOGS
Leafsize=5 Mincatsize = 5 Maxbranch=2 Maxdepth=6 alpha = 0.2
Padjust= CHAIDBEFORE DEPTH MAXRULES=1 MAXSURRS=0 Missing=USEINSEARCH Exhaustive=5000 ;
input %INTINPUTS
/ level = interval;
target A_C_0804_flag_compro / level=INTERVAL
Criterion=PROBF;;
Performance DISK
NodeSize=20000;
Assess NoValidata measure=ASE;
SUBTREE BEST ;
MAKEMACRO NLEAVES=nleaves;
save

NODESTAT=work.Tree_OUTNODES
SUMMARY=work.Tree_OUTSUMMARY

code file="C:\labo2\EMPUBLISHSCORE.sas"
group=Tree;
code file="C:\labo2\EMFLOWSCORE.sas"
group=Tree
residual;
run;
quit;

谢谢!

4

1 回答 1

0

在下面的讨论中,我无法检查任何代码,因为我目前无法访问 Enterprise Miner。

有几种方法可以获取您想要的信息。虽然,由于它们是为 EM 而不是人类使用的,所以它们似乎很少被混淆。

save rules = <dataset>;您可以使用该语句要求过程输出其规则集。这将创建一个包含所有拆分规则的数据集。格式有点奇怪,但文档解释了它应该如何解释。

您可以使用生成的代码来分箱您的数据。可以将编写的代码文件code file = <fileref>;放入读取正确结构数据的数据步骤中。像这样:

data out; 
    set in; 
    %include <fileref>; 
run;

可以在此处看到相同概念的示例(尽管是 forproc split而不是) 。proc arboretum

您可以使用该score data = <inDataset> out = <outDataset>;语句让该过程将树应用于您的数据集。这可以与save model = <dataset>;语句结合使用,以便以后通过inmodel = <dataset>选项使用相同的模型。这看起来像:

/* Training */
proc arboretum data = histDS;
    /*...*/
    save model = modelDef;
    score data = histDS out = histTree;
run;

/* Scoring */

proc arboretum inmodel = modelDef;
    score data = newDS out = newTree;
run;

此处save提供了如何使用某些输出数据集的示例。

于 2014-10-01T22:11:24.943 回答