使用不同的簇編號重複正常聚類你好。所有
我是JMP的新手,尤其是使用JSL,我一直在嘗試使用變量簇編號自動化正常聚類的腳本
使用cond
但是,正常的混合物並不理解變量和
只需要數字。所以我希望我能找到將變量放入數字參數的方法,或者
任何其他選擇。
我的腳本是這樣的:
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:使用不同的簇編號重複正常聚類非常感謝!!它確實有幫助。
我並不謹慎區分標量值和特定函數的向量。Re:使用不同的簇編號重複正常聚類如果你寫出“r”的值
show( r );
它返回值
r = [2];
消息
<<獲取行where()
返回值矩陣,而不是標量值。如果你寫出了矩陣中第一個元素的值“r”,
Show( r[1] );
它會顯示出來
r[1] = 2;
所以你的問題的解決方案是引用變量“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:使用不同的簇編號重複正常聚類嗨親愛的txnelson
謝謝你的回复。它真的有助於解決我的一些問題。但仍有一些問題沒有解決。
更詳細地說,我的意圖是製作腳本,從(1到n)(用戶在插件中插入的大於1的整數)集群中選擇最佳正常聚類數,並僅顯示最佳正常聚類報告。
在txnelson的答案的幫助下,我能夠製作提取最佳正常聚類數字的腳本(換句話說,最小的BIC)。但我面臨著另一個障礙,即只使用提取的最佳聚類數來製作普通聚類。我的劇本如下;
名稱默認為此處(1);
dt = Open(“$ SAMPLE_DATA / Iris.jmp”);
J = 7;
nw2 =新窗口(“clustering”,vlb = V List Box());
for(i = 1,i <= j,i ++,
obj = dt <<普通混合物(
Y(
:萼片長度,
:萼片寬度,
:花瓣長度
)
{Mixtures Tolerance(0.00000001),Mixtures MaxIter(300),
混合物N開始(30),異常值簇(0),對角線方差(0),
集群數量(i)}
);
obj << Go;
vlb << append(Report(obj));
obj <<關閉窗口();
);
nw2 [tablebox(1)] << make組合數據表;
pr =當前數據表();
mn = Col最小值(:BIC);
r = pr << get rows where(:BIC == mn);
dt <<普通混合物(Y(
:萼片長度,
:萼片寬度,
:花瓣長度
)
{Mixtures Tolerance(0.00000001),Mixtures MaxIter(300),
混合物N開始(30),異常值簇(0),對角線方差(0),
集群數量(r),go}
);
即使我將特定的簇號保存為“r”變量,“正常混合物”也沒有實現該變量值。在我看來,'Normal Mixture'僅在與'for'函數一起使用時才將變量作為數字。
希望有任何解決方案或替代方案來解決這個問題。Re:使用不同的簇編號重複正常聚類嗨親愛的txnelson
謝謝你的回复。它真的有助於解決我的一些問題。但仍有一些問題沒有解決。
更詳細地說,我的意圖是製作腳本,從(1到n)(用戶在插件中插入的大於1的整數)集群中選擇最佳正常聚類數,並僅顯示最佳正常聚類報告。
在txnelson的答案的幫助下,我能夠製作提取最佳正常聚類數字的腳本(換句話說,最小的BIC)。但我面臨著另一個障礙,即只使用提取的最佳聚類數來製作普通聚類。我的劇本如下;
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}
);
即使我將特定的簇號保存為“r”變量,“正常混合物”也沒有實現該變量值。在我看來,'Normal Mixture'僅在與'for'函數一起使用時才將變量作為數字。
希望有任何解決方案或替代方案來解決這個問題。
Re:使用不同的簇編號重複正常聚類我不確定你在使用Column Names1,2和3做什麼。 我已經猜到了它們的用法如下。 這是一個示例腳本,可以按照我的想法運行。
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;
);