JSL - Ripetizioni all'interno di una funzione della piattaformaNames Default To Here( 1 );
// Create an Example data table
dt = currentdatatable();
// Get the names of the columns in the data table
colNames = dt << get column group( "WLS" );
nIters = 2;
Neural(
Y( :Type ),
X(eval(colNames)),
Validation Method( "KFold", 5 ),
Set Random Seed( 2 ),
for( k=1, k <= nIters, k++, Fit( NTanH ( 2 ) ) ),
);
Sto cercando di adattare più di un modello neurale usando lo script allegato. Se invece del ciclo for scrivo più volte Fit( NTanH(2)) funziona bene, ma con un ciclo for non riesco a farlo funzionare. Qualche suggerimento? Grazie!
Automazione e scriptingEsplorazione e visualizzazione dei datiRe: JSL - Si ripete all'interno di una funzione della piattaformaPotresti spostare Fit(NTanH()) all'esterno di Neural(). Di seguito è riportato un esempio dall'indice di scripting:

Versione modificata dall'indice di scripting con ciclo for:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Boston Housing.jmp");
obj = Neural(
Y(:mvalue),
X(:crim, :indus, :chas, :nox, :rooms, :age, :distance, :radial),
Set Random Seed(2)
);
For(i = 1, i <= 2, i++,
obj << Fit(NTanH(4));
);

Re: JSL - Si ripete all'interno di una funzione della piattaformaCiao Jarmo, quella era un'opzione che non ho provato ed è una soluzione al mio problema. Funziona bene. Grazie!
Re: JSL - Si ripete all'interno di una funzione della piattaformaCiao Jarmo, Di seguito è riportato uno script funzionante:
Names Default To Here( 1 );
delete symbols();
dt = current data table();
colNames = dt << get column group("WLs");
exclColnames = dt << get excluded columns();
For( i = 1, i <= N Items( exclColnames ), i++,
Remove From( colNames, As List( Loc( colNames, exclColnames[i] ) ) )
);
rpt = New Window( "Neural of Type", dt <<
Neural(
Y( :Type ),
X( eval ( colNames ) ),
Informative Missing( 0 ),
Validation Method( "KFold", 5 ),
Set Random Seed( 2 ),
Fit( NTanH( 2 ) ),
Fit( NTanH( 2 ) ),
Fit( NTanH( 2 ) )
)
);
Wait( 0 );
rpt["Neural", Outline Box( 1 ), "Validation", "Type", Table Box( 1 )] <<
Make Combined Data Table;
rpt << Close Window;Tuttavia, voglio rendere flessibile Fit(NTanH(2)). Il modo in cui hai dimostrato non funziona qui, ho provato a risolverlo con il prossimo script (tralasciando la prima parte):
obj =Neural(
Y( :Type ),
X( eval ( colNames ) ),
Informative Missing( 0 ),
Validation Method( "KFold", 5 ),
Set Random Seed( 2 ),
);
for(i=1, i<=3, i++, obj << Fit( NTanH(2)));
rpt = current window();<BR />
Wait( 0 );
rpt["Neural", Outline Box( 1 ), "Validation", "Type", Table Box( 1 )] <<
Make Combined Data Table;
rpt << Close Window;
Ma ora ricevo il messaggio di errore: "Impossibile sottoscrivere Display Box in accesso o valutazione di 'rpt[ /*####*/"Neural",Outline Box(1),"Validation","Type",Table Box(1 )]' , rpt[/*###*/"Neural", Riquadro contorno( 1 ), "Convalida", "Tipo", Riquadro tabella( 1 )]". Non capisco perché ricevo questo messaggio, perché il primo script funziona bene.
Hai una soluzione per questo problema e puoi spiegare perché ho questo problema, per capire un po 'meglio JSL. Grazie!
Re: JSL - Si ripete all'interno di una funzione della piattaformaGrazie, Jarmo, era lì che stavo cercando. Linea semplice, ma difficile da capire per qualcuno che non conosce JSL!
Re: JSL - Si ripete all'interno di una funzione della piattaformaIl codice non trova riferimenti corretti, potrebbe essere che cambiando rpt = Current Window(); to rpt = Current Report() è sufficiente, ma suggerirei caldamente di utilizzare il riferimento che (puoi) avere (nel mio esempio obj)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Boston Housing.jmp");
obj = Neural(
Y(:mvalue),
X(:crim, :indus, :chas, :nox, :rooms, :age, :distance, :radial),
Set Random Seed(2),
<< Fit(NTanH(4)),
<< Fit(NTanH(4)),
<< Fit(NTanH(4))
);
For(i = 1, i <= 2, i++,
obj << Fit(NTanH(4));
);
Report(obj)[Outline Box("Neural")][Outline Box("Training")][Table Box(1)] << Make Combined Data Table;