Normales Clustering mit variierender Clusternummer wiederholenHallo. alles
Ich bin neu bei JMP, insbesondere bei der Arbeit mit JSL, und ich habe versucht, Skripts zu erstellen, die das normale Clustering mit variierender Clusternummer automatisieren
mit cond
Eine Funktion wie for () versteht jedoch nicht die Variablen und
nimmt nur Zahlen. Ich hoffe, ich kann Wege finden, um Variablen in Zahlenargumente einzufügen, oder
andere Alternativen.
Mein Skript ist genau so:
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})));
Betreff: Wiederholung des normalen Clusterings mit variierender ClusternummerVielen vielen Dank!! Es hat wirklich geholfen.
Ich war nicht vorsichtig, zwischen Skalarwerten und Vektoren bestimmter Funktionen zu unterscheiden.Betreff: Wiederholung des normalen Clusterings mit variierender ClusternummerWenn Sie den Wert von "r" ausschreiben
show( r );
Es gibt den Wert zurück
r = [2];
Die Nachricht
<< Zeilen bekommen wo ()
gibt eine Matrix von Werten zurück, nicht einen skalaren Wert. Wenn Sie den Wert des ersten Elements in der Matrix mit dem Namen "r" geschrieben haben,
Show( r[1] );
Es würde angezeigt
r[1] = 2;
Die Lösung für Ihr Problem besteht also darin, auf das 1. Element der Variablen "r" zu verweisen.
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}
);Betreff: Wiederholung des normalen Clusterings mit variierender ClusternummerHallo liebes Txnelson
Danke für deine Antwort. Es hilft wirklich, einige meiner Probleme zu lösen. aber einige probleme sind nicht gelöst.
Um genauer zu sein, bestand mein Ziel darin, ein Skript zu erstellen, das die besten normalen Cluster-Nummern aus (1 bis n) (ganze Zahl größer als 1, die Benutzer in Add-Ins einfügen) auswählt und nur den optimalen normalen Cluster-Bericht anzeigt.
Mit Hilfe der Antwort von txnelson konnte ich ein Skript erstellen, das die besten normalen Clustering-Zahlen (mit anderen Worten kleinste BIC) extrahiert. Aber ich sah mich einem anderen Haufen an, indem ich einen normalen Cluster mit nur der besten extrahierten Clustering-Zahl machte. Und mein Skript war wie folgt;
Namensvorgabe bis hier (1);
dt = Open ("$ SAMPLE_DATA / Iris.jmp");
j = 7;
nw2 = Neues Fenster ("Clustering", vlb = V List Box ());
für (i = 1, i <= j, i ++,
obj = dt << Normalmischungen (
Y (
: Kelchlänge,
: Kelchblattbreite,
: Blütenblattlänge
)
{Mischungstoleranz (0,00000001), Mixers MaxIter (300),
Mischungen N Starts (30), Outlier-Cluster (0), Diagonale Varianz (0),
Anzahl der Cluster (i)}
);
obj << Go;
vlb << append (Report (obj));
obj << Fenster schliessen ();
);
nw2 [tablebox (1)] << kombinierte Datentabelle erstellen;
pr = aktuelle Datentabelle ();
mn = Col Minimum (: BIC);
r = pr << Zeilen bekommen wo (: BIC == mn);
dt << Normalmischungen (Y (
: Kelchlänge,
: Kelchblattbreite,
: Blütenblattlänge
)
{Mischungstoleranz (0,00000001), Mixers MaxIter (300),
Mischungen N Starts (30), Outlier-Cluster (0), Diagonale Varianz (0),
Anzahl der Cluster (r), los}
);
Obwohl ich eine bestimmte Clusternummer in der Variablen 'r' gespeichert habe, hat die 'normale Mischung' diesen variablen Wert nicht erkannt. Es scheint mir, dass "Normal Mixture" die Variable nur als Zahl nimmt, wenn sie mit "for" -Funktionen verwendet wird.
Ich hoffe, es gibt Lösungen oder Alternativen zu diesen Problemen.Betreff: Wiederholung des normalen Clusterings mit variierender ClusternummerHallo liebes Txnelson
Danke für deine Antwort. Es hilft wirklich, einige meiner Probleme zu lösen. aber einige probleme sind nicht gelöst.
Um genauer zu sein, bestand mein Ziel darin, ein Skript zu erstellen, das die besten normalen Cluster-Nummern aus (1 bis n) (ganze Zahl größer als 1, die Benutzer in Add-Ins einfügen) auswählt und nur den optimalen normalen Cluster-Bericht anzeigt.
Mit Hilfe der Antwort von txnelson konnte ich ein Skript erstellen, das die besten normalen Clustering-Zahlen (mit anderen Worten kleinste BIC) extrahiert. Aber ich sah mich einem anderen Haufen an, indem ich einen normalen Cluster mit nur der besten extrahierten Clustering-Zahl machte. Und mein Skript war wie folgt;
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}
);
Obwohl ich eine bestimmte Clusternummer in der Variablen 'r' gespeichert habe, hat die 'normale Mischung' diesen variablen Wert nicht erkannt. Es scheint mir, dass "Normal Mixture" die Variable nur als Zahl nimmt, wenn sie mit "for" -Funktionen verwendet wird.
Ich hoffe, es gibt Lösungen oder Alternativen zu diesen Problemen.
Betreff: Wiederholung des normalen Clusterings mit variierender ClusternummerIch bin nicht wirklich sicher, was Sie mit den Spaltennamen 1, 2 und 3 machen. Ich habe ihre Verwendung unten erraten. Hier ist ein Beispielskript, das so funktioniert, wie ich es mir vorstelle.
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;
);