Repitiendo el agrupamiento normal con un número variableHola. todos
Soy nuevo en JMP, especialmente en el trabajo con JSL, y he estado tratando de crear secuencias de comandos que automaticen la agrupación en clúster normal con el número de agrupación varing
usando cond
Sin embargo, la función normal como para (), la mezcla normal no comprende las variables y
Sólo toma números. así que espero poder encontrar formas de poner variables en argumentos numéricos, o
Cualquier otra alternativa.
mi guión es así:
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: Repitiendo la agrupación normal con un número de agrupación variable¡¡Muchas gracias!! Realmente ayudó.
No tuve cuidado de distinguir entre valores escalares y vectores de funciones específicas.Re: Repitiendo la agrupación normal con un número de agrupación variableSi escribes el valor de "r"
show( r );
Devuelve el valor
r = [2];
El mensaje
<< obtener filas donde ()
devuelve una matriz de valores, no un valor escalar. Si escribió el valor del primer elemento en la matriz llamada "r",
Show( r[1] );
Se mostraría
r[1] = 2;
Entonces la solución a su problema es hacer referencia al primer elemento 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: Repitiendo la agrupación normal con un número de agrupación variableHola querido txnelson
Gracias por tu respuesta. Realmente ayuda a resolver algunos de mis problemas. Pero todavía algunos problemas no están resueltos.
Para ser más detallados, Mi intención era hacer un script que eligiera los mejores números de agrupación normal de (1 a n) (entero más grande que 1 que los usuarios insertan en complementos) agrupaciones y mostrar solo el informe óptimo de agrupación normal.
Con la ayuda de la respuesta de txnelson, pude crear un script que extrae los mejores números de agrupamiento (en otras palabras, el BIC más pequeño). Pero me enfrenté a otro grupo con hacer clústeres normales con solo extraer el mejor número de agrupamientos. Y mi guión era el siguiente;
Nombres predeterminados hasta aquí (1);
dt = Abrir ("$ SAMPLE_DATA / Iris.jmp");
j = 7;
nw2 = Nueva ventana ("clustering", vlb = V List Box ());
para (i = 1, i <= j, i ++,
obj = dt << Mezclas normales (
Y
: Longitud del sépalo,
: Ancho sepal,
: Longitud del pétalo
)
{Tolerancia de mezclas (0.00000001), Mezclas MaxIter (300),
Mezclas N comienza (30), grupo de valores atípicos (0), varianza diagonal (0),
Número de grupos (i)}
);
obj << Go;
vlb << añadir (Informe (obj));
obj << cerrar ventana ();
);
nw2 [tablebox (1)] << crea una tabla de datos combinada;
pr = tabla de datos actual ();
mn = Col Mínimo (: BIC);
r = pr << obtener filas donde (: BIC == mn);
dt << Mezclas normales (Y (
: Longitud del sépalo,
: Ancho sepal,
: Longitud del pétalo
)
{Tolerancia de mezclas (0.00000001), Mezclas MaxIter (300),
Mezclas N comienza (30), grupo de valores atípicos (0), varianza diagonal (0),
Número de grupos (r), ir}
);
Aunque guardé el número de grupo específico en la variable 'r', la 'mezcla normal' no se dio cuenta de ese valor variable. Me parece que 'Mezcla normal' toma la variable como número solo si se usa con las funciones 'para'.
Espero que haya alguna solución o alternativa a este problema.Re: Repitiendo la agrupación normal con un número de agrupación variableHola querido txnelson
Gracias por tu respuesta. Realmente ayuda a resolver algunos de mis problemas. Pero todavía algunos problemas no están resueltos.
Para ser más detallados, Mi intención era hacer un script que eligiera los mejores números de agrupación normal de (1 a n) (entero más grande que 1 que los usuarios insertan en complementos) agrupaciones y mostrar solo el informe óptimo de agrupación normal.
Con la ayuda de la respuesta de txnelson, pude crear un script que extrae los mejores números de agrupamiento (en otras palabras, el BIC más pequeño). Pero me enfrenté a otro grupo con hacer clústeres normales con solo extraer el mejor número de agrupamientos. Y mi guión era el siguiente;
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}
);
Aunque guardé el número de grupo específico en la variable 'r', la 'mezcla normal' no se dio cuenta de ese valor variable. Me parece que 'Mezcla normal' toma la variable como número solo si se usa con las funciones 'para'.
Espero que haya alguna solución o alternativa a este problema.
Re: Repitiendo la agrupación normal con un número de agrupación variableNo estoy realmente seguro de lo que está haciendo con los Nombres de columnas 1, 2 y 3. He adivinado de su uso a continuación. Aquí hay un script de ejemplo que funciona como creo que quieres.
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;
);