さまざまなクラスタ番号で通常のクラスタリングを繰り返すこんにちは。すべて
私はJMPに不慣れで、特にJSLを使って作業しています。そして、変化するクラスター番号を使用してNormal Clusteringを自動化するスクリプトを作成しようとしています。
condを使う
for()のような理論関数ですが、通常の混合は変数を理解できません。
数字だけを取ります。それで、変数を数引数にする方法を見つけることができるか
他の選択肢
私のスクリプトはこんな感じです:
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})));
再:クラスタ番号を変えて通常のクラスタリングを繰り返す本当にありがとうございます!!本当に助かりました。
スカラー値と特定の関数のベクトルを区別するのに慎重にはなりませんでした。再:クラスタ番号を変えて通常のクラスタリングを繰り返すあなたが "r"の値を書き出すならば
show( r );
値を返す
r = [2];
メッセージ
<<行を取得する
スカラ値ではなく、値の行列を返します。行列の最初の要素の値 "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}
);再:クラスタ番号を変えて通常のクラスタリングを繰り返すこんにちは親愛なるtxnelson
お返事ありがとうございます。それは本当に私の問題のいくつかを解決するのに役立ちます。それでもまだいくつかの問題は解決されていません。
さらに詳しく言うと、私の意図は、(1からn)(ユーザーがアドインに挿入する1より大きい整数)クラスターの中から最適な通常のクラスター番号を選択し、その最適な通常のクラスターレポートのみを表示するスクリプトを作成することです。
txnelsonの答えを利用して、私は最良の通常のクラスタリング数(つまり、最小のBIC)を抽出するスクリプトを作成することができました。しかし、抽出された最良のクラスタリング数のみを使用して通常のクラスタを作成することに、もう1つの問題に直面しました。そして私の脚本は次のとおりです。
デフォルトはここにあります(1)。
dt = Open( "$ SAMPLE_DATA / Iris.jmp");
j = 7。
nw2 =新しいウィンドウ(「クラスタリング」、v1b = Vリストボックス())。
(i = 1、i <= j、i ++、
obj = dt <<通常の混合(
Y(
:シールの長さ、
:シール幅、
花弁の長さ
、
{混合許容値(0.00000001)、混合最大値(300)、
混合物Nの開始(30)、外れ値のクラスター(0)、対角分散(0)、
クラスタ数(i)}
;
obj << Go;
vlb << append(Report(obj));
obj << window()を閉じる。
;
nw2 [tablebox(1)] <<結合データテーブルを作成する。
pr =現在のデータテーブル()。
mn = Col最小値(:BIC)。
r = pr <<行を取得します。(:BIC == mn);
dt <<通常の混合物(Y(
:シールの長さ、
:シール幅、
花弁の長さ
、
{混合許容値(0.00000001)、混合最大値(300)、
混合物Nの開始(30)、外れ値のクラスター(0)、対角分散(0)、
クラスター数(r)、go}
;
特定のクラスタ番号を 'r'変数に保存したにもかかわらず、「通常の混合」はその変数値を認識しませんでした。私の考えでは、'Normal Mixture'は 'for'関数と一緒に使われた場合にのみ変数を数とみなします。
この問題に対する解決策や代替策があることを願います。再:クラスタ番号を変えて通常のクラスタリングを繰り返すこんにちは親愛なるtxnelson
お返事ありがとうございます。それは本当に私の問題のいくつかを解決するのに役立ちます。それでもまだいくつかの問題は解決されていません。
さらに詳しく言うと、私の意図は、(1からn)(ユーザーがアドインに挿入する1より大きい整数)クラスターの中から最適な通常のクラスター番号を選択し、その最適な通常のクラスターレポートのみを表示するスクリプトを作成することです。
txnelsonの答えを利用して、私は最良の通常のクラスタリング数(つまり、最小のBIC)を抽出するスクリプトを作成することができました。しかし、抽出された最良のクラスタリング数のみを使用して通常のクラスタを作成することに、もう1つの問題に直面しました。そして私の脚本は次のとおりです。
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'関数と一緒に使われた場合にのみ変数を数とみなします。
この問題に対する解決策や代替策があることを願います。
再:クラスタ番号を変えて通常のクラスタリングを繰り返すカラム名1、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;
);