Ejemplo: ¿Cómo es posible que los nombres de columnas duplicadas no se extraigan de la "Fórmula de etiqueta de hoja" del modelo de árbol de decisión?
¿Cómo obtener nombres de columnas no duplicados de la "fórmula de etiqueta de hoja" del modelo de árbol de decisión?Por ejemplo, utilice el siguiente JSL para obtener la fórmula de etiqueta de hoja. Extraiga los nombres de las columnas de la fórmula en las primeras 10 filas.
¡Gracias!
d0 = Open( "$SAMPLE_DATA/Equity.jmp" );
p=Partition(
Y( :BAD ),
X(
:LOAN, :MORTDUE, :VALUE, :REASON, :JOB, :YOJ, :DEROG, :DELINQ, :CLAGE, :NINQ,
:CLNO, :DEBTINC
),
Validation Portion( 0.3 )
);
p<<GO></GO>
Automatización y secuencias de comandosEjemplo: ¿Cómo es posible que los nombres de columnas duplicadas no se extraigan de la "Fórmula de etiqueta de hoja" del modelo de árbol de decisión?Current Data Table( d0 );
txt = "";
For( i = 1, i <= 10, i++,
If( i == 1,
a = "",
a = "aaa"
);
nn = d0[i, "Leaf Label Formula"];
txt = txt || a || nn;
);
tx = "ccc\!n" || Substitute( txt, "&", "\!n", "aaa", "\!n", " or Missing", "", " not Missing", "", " Is Missing", "" );
tx = Substitute( tx, ">", "\!t>", "<", "\!t<", "(", "\!t(" );
d1 = Open( Char To Blob( tx ), "text" );
d2 = d1 << Summary( Group( ccc ), Freq( 0 ), Weight( 0 ), Link to original data table( 0 ) );Re: ¿Cómo obtener nombres de columnas no duplicados de la "fórmula de etiqueta de hoja" del modelo de árbol de decisión?Puede recorrer todos los nombres de columnas posibles y, si se encuentra una coincidencia, agregarla a la matriz asociativa (y eliminarla de la lista de columnas si lo desea)
Names Default To Here(1);
input_cols = {"LOAN", "MORTDUE", "VALUE", "REASON", "JOB", "YOJ", "DEROG", "DELINQ", "CLAGE", "NINQ", "CLNO", "DEBTINC"};
dt = Open("$SAMPLE_DATA/Equity.jmp");
part = dt << Partition(
Y(:BAD),
X(Eval(input_cols)),
Validation Portion(0.3)
);
part << go;
part << save leaf label formula;
part << close window;
aa_cols = Associative Array();
For Each({row_val}, dt[1::10, "Leaf Label Formula"],
input_cols_temp = input_cols;
For Each({input_col, idx}, input_cols,
If(Contains(row_val, input_col),
aa_cols[input_col] = 1;
Remove From(input_cols_temp, idx);
);
);
input_cols = input_cols_temp;
);