Répéter le clustering normal avec un numéro de cluster variableSalut. tout
JMP travaille pour la première fois avec JSL, et j’essaie de créer un script qui automatise le clustering normal avec un numéro de cluster variable.
en utilisant cond
fonction fonctionnelle comme pour () cependant, le mélange normal ne comprend pas les variables et
prend seulement des chiffres. J'espère donc pouvoir trouver des moyens de mettre des variables dans des arguments numériques, ou
toute autre alternative.
mon script est juste comme ça:
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})));
Re: répéter le clustering normal avec un numéro de cluster variableMerci beaucoup!! Cela m'a vraiment aidé.
Je n’étais pas prudent de faire la distinction entre les valeurs scalaires et les vecteurs de fonctions spécifiques.Re: répéter le clustering normal avec un numéro de cluster variableSi vous écrivez la valeur de "r"
show( r );
Il retourne la valeur
r = [2];
Le message
<< obtenir des lignes où ()
renvoie une matrice de valeurs, pas une valeur scalaire. Si vous avez écrit la valeur du premier élément de la matrice appelé "r",
Show( r[1] );
Il afficherait
r[1] = 2;
La solution à votre problème consiste donc à référencer le premier élément de la variable "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}
);Re: répéter le clustering normal avec un numéro de cluster variableSalut cher txnelson
Merci de votre réponse. Cela aide vraiment à résoudre certains de mes problèmes. mais certains problèmes ne sont toujours pas résolus.
Pour être plus détaillé, mon intention était de créer un script qui sélectionne les meilleurs numéros de clustering normaux parmi (1 à n) (nombre entier supérieur à 1 que les utilisateurs insèrent dans des compléments) et affiche uniquement ce rapport optimal de cluster normal.
Avec l'aide de la réponse de txnelson, j'ai pu créer un script permettant d'extraire les meilleurs nombres de clustering normaux (en d'autres termes, le plus petit code BIC). Mais je me suis retrouvé face à un autre groupe de personnes qui souhaitaient créer une grappe normale avec uniquement le meilleur numéro de grappe extrait. Et mon script était comme suit;
Noms par défaut ici (1);
dt = Open ("$ SAMPLE_DATA / Iris.jmp");
j = 7;
nw2 = Nouvelle fenêtre ("clustering", vlb = V List Box ());
pour (i = 1, i <= j, i ++,
obj = dt << Mélanges normaux (
Y (
: Longueur du sépale,
: Largeur des sépales,
: Longueur des pétales
),
{Tolérances des mélanges (0.00000001), Mélanges MaxIter (300),
Mélanges N commence (30), groupe de valeurs aberrantes (0), variance diagonale (0),
Nombre de clusters (i)}
)
obj << Go;
vlb << append (Report (obj));
obj << fermer la fenêtre ();
)
nw2 [tablebox (1)] << fabrique une table de données combinée;
pr = table de données actuelle ();
mn = Col Minimum (: BIC);
r = pr << obtenir des lignes où (: BIC == mn);
dt << Mélanges normaux (Y (
: Longueur du sépale,
: Largeur des sépales,
: Longueur des pétales
),
{Tolérances des mélanges (0.00000001), Mélanges MaxIter (300),
Mélanges N commence (30), groupe de valeurs aberrantes (0), variance diagonale (0),
Nombre de clusters (r), allez}
)
Même si j'ai enregistré un numéro de cluster spécifique dans la variable 'r', le 'mélange normal' ne réalise pas cette valeur de variable. Il me semble que «Mélange normal» ne prend la variable comme nombre que s’il est utilisé avec les fonctions «pour».
J'espère qu'il y a des solutions ou des alternatives à ces problèmes.Re: répéter le clustering normal avec un numéro de cluster variableSalut cher txnelson
Merci de votre réponse. Cela aide vraiment à résoudre certains de mes problèmes. mais certains problèmes ne sont toujours pas résolus.
Pour être plus détaillé, mon intention était de créer un script qui sélectionne les meilleurs numéros de clustering normaux parmi (1 à n) (nombre entier supérieur à 1 que les utilisateurs insèrent dans des compléments) et affiche uniquement ce rapport optimal de cluster normal.
Avec l'aide de la réponse de txnelson, j'ai pu créer un script permettant d'extraire les meilleurs nombres de clustering normaux (en d'autres termes, le plus petit code BIC). Mais je me suis retrouvé face à un autre groupe de personnes qui souhaitaient créer une grappe normale avec uniquement le meilleur numéro de grappe extrait. Et mon script était comme suit;
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}
);
Même si j'ai enregistré un numéro de cluster spécifique dans la variable 'r', le 'mélange normal' ne réalise pas cette valeur de variable. Il me semble que «Mélange normal» ne prend la variable comme nombre que s’il est utilisé avec les fonctions «pour».
J'espère qu'il y a des solutions ou des alternatives à ces problèmes.
Re: répéter le clustering normal avec un numéro de cluster variableJe ne suis pas vraiment sûr de ce que vous faites avec les noms de colonnes1, 2 et 3. J'ai deviné de leur utilisation ci-dessous. Voici un exemple de script qui fonctionne comme vous le souhaitez.
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;
);