Re: Codificación JSL para Partición de múltiples segmentosPodría usar el botón, por ejemplo, para crear nuevas tablas
Names Default To Here(1);
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
filepath = "$Desktop";
nw = New window("part test",
V List Box(
obj = dt << Partition(
Y(:NPN1),
X(:PNP1, :PNP2, :PNP3, :PNP4, :NPN2, :NPN3, :NPN4),
Method("Decision Tree")
),
Button box("make splits",
make_splits_expr
);
)
);
obj << ShowGraph(0);
obj << SplitBest(4);
obj << Show Split Count(1);
obj << Show Split Prob(1);
make_splits_expr = Expr(
sel_rows = dt << Get Selected Rows;
If(N Items(sel_rows > 0),
dtTemp = dt << subset(invisible, rows(), selected columns(0));
Close(dtTemp, save(filepath || "\" || "badpopulation.jmp"));
dt << invert row selection;
sel_rows = dt << Get Selected Rows;
dtSEG = dt << subset(invisible, selected rows(1), selected columns(0));
Close(dtSEG, save(filepath || "\" || "goodpopulation.jmp"));
);
dt << Clear Selected;
);
El manejo adecuado de errores e informar al usuario de lo que está pasando no se encuentra en este ejemplo.
Codificación JSL para Partición de múltiples segmentosEl siguiente código permite la selección de múltiples nodos de hoja del árbol de partición a través de la opción Seleccionar filas. Sin embargo, la ventana de partición debe cerrarse después de que el usuario seleccione los nodos hoja para la creación de archivos de poblaciones buenas y malas. ¿Existe alguna alternativa en la que no sea necesario cerrar la ventana Partición? o cualquier otra función en lugar de onClose() que pueda usar?
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// Matrix of all rows that were selected
::wasSelected = [];
// Row state handler function
updateWasSelected = Function( {x},
{Default Local},
// 'x' is a column vector of row states that have CHANGED. We just need those that are now selected . . .
For( i = 1, i <= N Row( x ), i++,
// Need to accumulate selected rows, not adding duplicates
If( Selected( Row State( x[i] ) ) & !Contains( ::wasSelected, x[i] ),
::wasSelected = V Concat( ::wasSelected, x[i] )
)
)
);
// Assign the handler to the table
rsh = dt << MakeRowStateHandler( updateWasSelected );
obj = dt << Partition(
Y( :NPN1 ),
X( :PNP1, :PNP2, :PNP3, :PNP4, :NPN2, :NPN3, :NPN4 ),
Method( "Decision Tree" )
);
obj << ShowGraph( 0 );
obj << SplitBest( 4 );
obj << Show Split Count( 1 );
obj << Show Split Prob( 1 );
obj << onClose(
If( N Rows( ::wasSelected ) > 0,
filepath = "$Desktop";
Try(
dtTemp = dt << subset( invisible, rows( ::wasSelected ), selected columns( 0 ) );
Close( dtTemp, save( filepath || "\" || "badpopulation.jmp" ) );
,
Print( "No rows for table!" )
);
dt << invert row selection;
Try(
dtSEG = dt << subset( invisible, selected rows( 1 ), selected columns( 0 ) );
Close( dtSEG, save( filepath || "\" || "goodpopulation.jmp" ) );
,
Print( "No rows" )
);
);
dt << clearRowStates;
);
Analíticasecuencias de comandosventanas