SAS-使用proc arbor来存储变量

时间:2014-09-15 01:21:29

标签: sas decision-tree bins

我正在尝试使用PROC ARBOR为连续变量定义分档。生成的树运行良好,我可以通过视觉探索找到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;

谢谢!

1 个答案:

答案 0 :(得分:0)

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

有多种方法可以获得您想要的信息。虽然,因为它们打算供EM而不是人类使用,但它们似乎很少被混淆。

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

您可以使用生成的代码来存储数据。 code file = <fileref>;编写的代码文件可以放入数据步骤,读取正确结构的数据。如下所示:

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

proc 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

可以使用某些{{1}}输出数据集的示例here