Wie bereinige ich den K-Means-Cluster in JMP Scripting?Hallo,
Ich habe ein JMP-Skript, das mithilfe von K Means Cluster ein Paar kartesischer Koordinatendatensätze abgleicht.Das Skript eignet sich gut für Datensätze mit der gleichen Anzahl an Koordinaten.Ich versuche, das Skript zu erweitern, um Szenarien zu bewältigen, in denen einer der Datensätze fehlende Koordinaten oder weniger Koordinaten als der andere aufweist.Ich kann dies manuell über das Dialogfenster „K Means Cluster“ tun, indem ich zuerst „Declutter“ verwende, dann die Ausreißer auswähle und sie ausschließe.Ich möchte diesen Prozess durch das JMP-Skript automatisieren.Mein Plan besteht darin, die Funktion „Declutter“ auszuführen und die Anzahl der nächsten Nachbarn auf 1 zu begrenzen, dann „NN-Abstände speichern“ für eine Spalte und die Zeilen auszuschließen, die außerhalb von 3 Sigma des Mittelwerts liegen. Führen Sie dann die Clusteranalyse für die verbleibenden Koordinaten durch.
Ich bin mir nicht sicher, wie ich das über JMP-Skripting machen soll.Das Identifizieren und Ausschließen der Ausreißer durch die nächsten Nachbarn muss vor Beginn der Clusterfunktion erfolgen.Hier stecke ich fest.
Wäre es einfacher, das K Means Cluster-Dialogfeld mit dem Declutter-Plot zu belassen und es dem Benutzer zu ermöglichen, die Ausreißer hervorzuheben, sie auszuschließen und dann den Clustering-Algorithmus auszuführen?Wenn ja, ist es möglich, dass das Skript pausiert, während der Benutzer diese Aktionen ausführt, und dann fortfährt, nachdem die Cluster-Funktion abgeschlossen ist? Ich habe zusätzliche Aktionen, die für das Clusterergebnis ausgeführt werden.
Unten ist ein Ausschnitt der K Means Cluster-Funktion, wie ich sie jetzt habe.Die Variable nClusters wird durch die Anzahl der Zeilen aus dem Datensatz mit der geringsten Anzahl an Koordinaten definiert.
obj = K bedeutet Cluster (
Y ( : X , : Y ) ,
Anzahl der Cluster ( nCluster ) ,
Spalten individuell skaliert ( 0 )
) ;
obj << Declutter(1,1);
obj << Gehen ;
Jede Hilfe wäre sehr dankbar.
-Ry
Betreff: Wie entstöre ich K Means-Cluster in JMP Scripting?Hallo ih,
Danke schön.Ich werde diese Funktion weiter untersuchen.
Beste grüße,
Ry
Betreff: Wie entstöre ich K Means-Cluster in JMP Scripting?Ich kann mich nicht daran erinnern, wie das in JMP 12 aussah, aber John Sall hat darauf verwiesen Hier Daher erwarte ich, dass es machbar ist. Können Sie Cols->Modeling Utilities überprüfen? Hoffentlich können Sie die gleiche Analyse über die Plattform durchführen.
Betreff: Wie entstöre ich K Means-Cluster in JMP Scripting?Hallo ih,
Ich bin nicht sicher, ob diese Funktion in JMP 12 (was ich verwende) verfügbar ist.Wenn ich den von Ihnen aufgelisteten Code teste, gibt es für den Schritt „Ausreißer untersuchen“ kein Ergebnis.Durch das Speichern von NN-Entfernungen wird keine Spalte generiert.
Grüße,
Ry
Betreff: Wie entstöre ich K Means-Cluster in JMP Scripting?Ich glaube, dass Sie dies in JMP 13 mithilfe der Screening-Plattform tun können:
//Use sample data
dt = Open( "$SAMPLE_DATA/Cytometry.jmp" );
//Find outliers using KNN
outliers = dt << Explore Outliers(
Y( :CD3, :CD8 ),
Name( "Multivariate k-Nearest Neighbor Outliers" )(K( 1 ))
);
//Save the distance to the nearest point
outliers << Save NN Distances;
//Make a column indicating that the point is an outlier. You could skip this and select the points over a certain value directly.
dt << New Column( "Is Outlier",
Numeric, "Nominal",
Formula(
If(
:Nearest 1 Distance > Col Mean( :Nearest 1 Distance ) + 3 *
Col Std Dev( :Nearest 1 Distance ),
1,
0
)
),
Value Labels( {0 = "No", 1 = "Yes"} ), Use Value Labels( 1 )
);
//show which points will be excluded
dt << Graph Builder(
Show Control Panel( 0 ),
Variables(
X( Transform Column( "Row", Formula( Row() ) ) ),
Y( :Nearest 1 Distance ),
Color( :Is Outlier )
),
Elements( Points( X, Y, Legend( 14 ) ) )
);
//Uncomment to Hide and exclude outliers
//dt << select where( :Is Outlier == 1 );
//dt << hide and exclude;