Comment désencombrer K Means Cluster dans JMP ScriptingBonjour,
J'ai un script JMP qui correspond à une paire d'ensembles de données de coordonnées cartésiennes à l'aide de K Means Cluster.Le script fonctionne bien pour les ensembles de données qui ont un nombre égal de coordonnées.J'essaie d'étendre le script pour gérer les scénarios où l'un des ensembles de données a des coordonnées manquantes ou moins de coordonnées que l'autre.Je peux le faire manuellement via la fenêtre de dialogue K Means Cluster en utilisant d'abord "Declutter", puis en sélectionnant les valeurs aberrantes et en les excluant.Je voudrais automatiser ce processus via le script JMP.Mon plan est d'exécuter la fonction 'Declutter' et de limiter le nombre de voisins les plus proches à 1 puis 'Save NN Distances' dans une colonne et d'exclure les lignes qui sont en dehors de 3 sigma de la moyenne. Ensuite, exécutez l'analyse de cluster sur les coordonnées restantes.
Je ne sais pas comment faire cela via les scripts JMP.L'action d'identification et d'exclusion des valeurs aberrantes par les voisins les plus proches doit avoir lieu avant le début de la fonction de cluster.C'est là que je suis bloqué.
Serait-il plus facile de laisser la boîte de dialogue K Means Cluster avec le graphique Declutter et de permettre à l'utilisateur de mettre en évidence les valeurs aberrantes, de les exclure, puis d'exécuter l'algorithme de clustering ?Si tel est le cas, est-il possible que le script s'interrompe pendant que l'utilisateur effectue ces actions, puis continue une fois la fonction de cluster terminée ? J'ai des actions supplémentaires qui sont effectuées sur le résultat du cluster.
Vous trouverez ci-dessous un extrait de la fonction K Means Cluster telle que je l'ai maintenant.La variable nClusters est définie par le nombre de lignes de l'ensemble de données avec le moins de coordonnées.
obj = K signifie cluster (
Oui ( : X , : Oui ) ,
Nombre de grappes ( nClusters ) ,
Colonnes mises à l'échelle individuellement ( 0 )
) ;
obj << Désencombrer(1,1);
obj << Aller ;
Toute aide serait grandement appréciée.
-Ry
Re : Comment désencombrer K Means Cluster dans JMP ScriptingBonjour moi,
Merci.Je vais explorer cette fonction plus loin.
Meilleures salutations,
Ry
Re : Comment désencombrer K Means Cluster dans JMP ScriptingMa mémoire de ce à quoi cela ressemblait dans JMP 12 est manquante, mais John Sall l'a référencé ici donc j'espère que cela peut être fait. Pouvez-vous vérifier Cols->Modeling Utilities ? J'espère que vous pourrez effectuer la même analyse via la plate-forme.
Re : Comment désencombrer K Means Cluster dans JMP ScriptingBonjour moi,
Je ne suis pas sûr que cette fonction soit disponible dans JMP 12 (ce que j'utilise).Lorsque je teste le code que vous avez répertorié, il n'y a aucun résultat pour l'étape "Explorer les valeurs aberrantes".L'enregistrement des distances NN ne génère pas de colonne.
Salutations,
Ry
Re : Comment désencombrer K Means Cluster dans JMP ScriptingDans JMP 13, je pense que vous pouvez le faire en utilisant la plate-forme de filtrage :
//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;