SAS-используйте proc arbor для bin переменных

Я пытаюсь использовать PROC ARBOR для определения ячеек для непрерывной переменной. Сгенерированное дерево работает хорошо, и я могу найти пределы бинов с помощью визуального исследования, но я хотел бы извлечь эти бины и использовать их для автоматической дискретизации исходной переменной. Это возможно?

Мой код:

%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;

Спасибо!


person GabyLP    schedule 15.09.2014    source источник


Ответы (1)


В приведенном ниже обсуждении мне не удалось проверить какой-либо код, поскольку в настоящее время у меня нет доступа к Enterprise Miner.

Есть несколько способов получить нужную информацию. Хотя, поскольку они предназначены для использования ЭМ, а не людьми, они могут показаться немного запутанными.

Вы можете попросить процедуру вывести свой набор правил, используя оператор save rules = <dataset>;. Это создаст набор данных со всеми правилами разделения. Формат немного странный, но документация объясняет, как это сделать. следует интерпретировать.

Вы можете использовать сгенерированный код для бинирования ваших данных. Файл кода, написанный 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 выходных наборов данных, доступен здесь.

person SRSwift    schedule 01.10.2014