K-means聚类与proc fastclus(SAS)保持观察顺序

时间:2017-06-17 15:42:26

标签: sas cluster-analysis k-means

我必须将我的人口聚集在8 clusters。我使用proc fastclusk-means方法(以最小化群集之间的差异)。观察代表一个分数,因此即使在聚类过程之后,它们仍然是有序的。我注意到了这一点:

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的一个参数),我可以用它来建立另一个债券:最小化方差,但保持在集群内有序的分数。

2 个答案:

答案 0 :(得分:1)

也许你可以在运行proc之前记下行顺序,然后在每个集群中进行排序?如果要将其用作聚类维度,请对其进行标准化并将其作为proc的输入之一提供。

E.g。为什么不用这样的额外变量创建一个视图?

UICollectionView

答案 1 :(得分: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,然后根据需要对结果进行排序。