2017-06-17 5 views
-1

8 clustersに集団をクラスタリングする必要があります。私はproc fastclusk-meansメソッドを使用しています(クラスター間の分散を最小限に抑えるため)。観察はスコアを表すので、クラスタリングプロセスの後でさえ、それらは順序付けられたままであることが重要です。私はこのように気づいた:K-meansは、proc fastclus(SAS)による観察によるクラスタリングを意味します。

proc sort data=input.population; 
by score; 
run; 

proc fastclus data = input.population 
       maxclusters = 8 list 
       out = score_clus 
       converge = 0.01 maxiter = 100 
       least = 2 noprint; 
var score; 
run; 

手順は順序を維持しませんでした。私は別の結合を置くために使うことができる方法(おそらくprocのパラメータ)があります:分散を最小限に抑えながら、クラスタ内で順序付けられたスコアを維持します。

答えて

1

procを実行して後で各クラスタ内で並べ替える前に、行の順序をメモすることができますか?これをクラスタリング・ディメンションとして使用する場合は、標準化してprocの入力の1つとして入力します。

など。このような余分な変数を持つビューを作成してみませんか?

data input.v_population/view = input.v_population; 
set input.population; 
myorder + 1; 
run; 
0

user667489の回答を拡張してください。 IDまたはSORT_ORDER変数をデータに追加します。そして、最後にそれを並べ替えます。

data cars/view=cars; 
set sashelp.cars; 
SORT_ORDER +1; 
run; 

proc fastclus data = cars 
       maxclusters = 8 list 
       out = score_clus 
       converge = 0.01 maxiter = 100 
       least = 2 noprint; 
var msrp; 
run; 

proc sort data=score_clus; 
by SORT_ORDER; 
run; 

これはSORT_ORDER変数を持つビューを作成し、その後、ビュー内のデータにPROC FASCLUSを実行し、その後、あなたが望むような結果をソートします。

関連する問題