Ripetizione del raggruppamento normale con numero di cluster diversoCiao. tutti
Sono nuovo di JMP, specialmente lavorando con JSL, e ho cercato di creare script che automatizzassero il Cluster normale con il numero di cluster varing
usando cond
funzione itionale come per (), tuttavia, la miscela normale non comprende le variabili e
prende solo numeri quindi spero di trovare modi per inserire variabili in argomenti numerici, o
qualsiasi altra alternativa.
il mio script è proprio così:
nw = new window("clustering",
for(i=1, i<5, i++,
Normal Mixtures(
Y(:column names1, :column names2, :column names3 ),
{Mixtures Tolerance( 0.00000001 ), Mixtures MaxIter( 300 ),
Mixtures N Starts( 30 ), Outlier Cluster( 0 ), Diagonal Variance( 0 ),
Number of Clusters( i ), Go})));
Ri: Ripetizione Clustering normale con numero di cluster diversoGrazie mille!! Mi ha davvero aiutato.
Non ero cauto nel distinguere tra valori scalari e vettori di funzioni specifiche.Ri: Ripetizione Clustering normale con numero di cluster diversoSe scrivi il valore di "r"
show( r );
Restituisce il valore
r = [2];
Il messaggio
<< ottieni righe dove ()
restituisce una matrice di valori, non un valore scalare. Se hai scritto il valore del primo elemento nella matrice chiamato "r",
Show( r[1] );
Verrà visualizzato
r[1] = 2;
Quindi la soluzione al tuo problema è fare riferimento al 1 ° elemento della variabile "r"
dt << Normal Mixtures(
Y( :Sepal length, :Sepal width, :Petal length ),
{Mixtures Tolerance( 0.00000001 ), Mixtures MaxIter( 300 ), Mixtures N Starts( 30 ), Outlier Cluster( 0 ),
Diagonal Variance( 0 ), Number of Clusters( r[1] ), go}
);Ri: Ripetizione Clustering normale con numero di cluster diversoCiao caro txnelson
Grazie per la risposta. Aiuta davvero a risolvere alcuni dei miei problemi. ma ancora alcuni problemi non sono risolti.
Per essere più dettagliato, la mia intenzione era di creare uno script che scegli i numeri di cluster normali migliori da (1 a n) (numero intero maggiore di 1 che gli utenti inseriscono nei componenti aggiuntivi) e mostra solo il rapporto cluster normale ottimale.
Con l'aiuto della risposta di txnelson sono riuscito a creare uno script che estraesse i numeri di cluster normali migliori (in altre parole, il BIC più piccolo). Ma ho affrontato un altro problema con un cluster normale con solo il miglior numero di cluster estratto. E la mia sceneggiatura era la seguente;
Nomi predefiniti qui (1);
dt = Open ("$ SAMPLE_DATA / Iris.jmp");
j = 7;
nw2 = Nuova finestra ("clustering", vlb = V List Box ());
per (i = 1, i <= j, i ++,
obj = dt << Miscele Normali (
Y (
: Lunghezza delle seppie,
: Larghezza delle sepali,
: Lunghezza del petalo
),
{Tolleranza delle miscele (0,00000001), Miscele MaxIter (300),
Mixtures N Avvia (30), Cluster Outlier (0), Varianza diagonale (0),
Numero di cluster (i)}
);
obj << Vai;
vlb << append (Rapporto (obj));
obj << chiudi la finestra ();
);
nw2 [tablebox (1)] << crea una tabella di dati combinata;
pr = current data table ();
mn = Col Minimum (: BIC);
r = pr << ottiene le righe dove (: BIC == mn);
dt << Miscele normali (Y (
: Lunghezza delle seppie,
: Larghezza delle sepali,
: Lunghezza del petalo
),
{Tolleranza delle miscele (0,00000001), Miscele MaxIter (300),
Mixtures N Avvia (30), Cluster Outlier (0), Varianza diagonale (0),
Numero di cluster (r), go}
);
Anche se ho salvato un numero di cluster specifico nella variabile 'r', la 'miscela normale' non ha compreso quel valore variabile. Mi sembra che "Normal Mixture" assuma la variabile come numero solo se usata con le funzioni "for".
Spero che ci siano soluzioni o alternative a questi problemi.Ri: Ripetizione Clustering normale con numero di cluster diversoCiao caro txnelson
Grazie per la risposta. Aiuta davvero a risolvere alcuni dei miei problemi. ma ancora alcuni problemi non sono risolti.
Per essere più dettagliato, la mia intenzione era di creare uno script che scegli i numeri di cluster normali migliori da (1 a n) (numero intero maggiore di 1 che gli utenti inseriscono nei componenti aggiuntivi) e mostra solo il rapporto cluster normale ottimale.
Con l'aiuto della risposta di txnelson sono riuscito a creare uno script che estraesse i numeri di cluster normali migliori (in altre parole, il BIC più piccolo). Ma ho affrontato un altro problema con un cluster normale con solo il miglior numero di cluster estratto. E la mia sceneggiatura era la seguente;
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Iris.jmp" );
j=7;
nw2 = New Window( "clustering", vlb = V List Box() );
for(i=1, i<=j, i++,
obj = dt << Normal Mixtures(
Y(
:Sepal length,
:Sepal width,
:Petal length
),
{Mixtures Tolerance( 0.00000001 ), Mixtures MaxIter( 300 ),
Mixtures N Starts( 30 ), Outlier Cluster( 0 ), Diagonal Variance( 0 ),
Number of Clusters( i )}
);
obj << Go;
vlb << append( Report( obj ) );
obj << close window();
);
nw2[tablebox(1)] << make combined data table;
pr = current data table();
mn = Col Minimum(:BIC);
r = pr << get rows where(:BIC == mn);
dt << Normal Mixtures(Y(
:Sepal length,
:Sepal width,
:Petal length
),
{Mixtures Tolerance( 0.00000001 ), Mixtures MaxIter( 300 ),
Mixtures N Starts( 30 ), Outlier Cluster( 0 ), Diagonal Variance( 0 ),
Number of Clusters( r ),go}
);
Anche se ho salvato un numero di cluster specifico nella variabile 'r', la 'miscela normale' non ha compreso quel valore variabile. Mi sembra che "Normal Mixture" assuma la variabile come numero solo se usata con le funzioni "for".
Spero che ci siano soluzioni o alternative a questi problemi.
Ri: Ripetizione Clustering normale con numero di cluster diversoNon sono sicuro di cosa si stia facendo con Column Name1, 2 e 3. Ho indovinato il loro uso qui sotto. Ecco uno script di esempio che funziona come penso che tu voglia.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Iris.jmp" );
nw = New Window( "clustering", vlb = V List Box() );
column names1 = "Sepal length";
column names2 = "Sepal width";
column names3 = "Petal length";
For( i = 1, i <= 4, i++,
obj = dt << Normal Mixtures(
Y(
Column( column names1 ),
Column( column names2 ),
Column( column names3 )
),
Number of Clusters( i )
);
obj << Go;
vlb << append( Report( obj ) );
obj << close window;
);