在s中用k均值聚类切断点

时间:2015-03-20 20:04:02

标签: sas cluster-analysis k-means hierarchical-clustering

所以我想将我的数据分类为SAS中具有截止点的集群。我使用的方法是k-means聚类。 (我不介意这个方法,只要它给了我3组。)

我的群集代码:

proc fastclus data=maindat outseed=seeds1 maxcluster =3 maxiter=0;
var value resid;
run;

输出结果有问题。我希望Value的截止点包含在输出文件中。 (我不想要Resid的截止点)。那么无论如何要在SAS中这样做吗?

编辑:正如Joe指出的那样,我无法通过使用k-mean聚类实现我正在寻找的东西。那还有另一种方式吗?基本上,我想要一个截止点,以便我可以将它应用到另一个数据集。

我有什么:

Cluster  Value      Resid
 1        34        11.7668
 2        38.9      0.5328
 3        42.625    -13.2364

我想要的是什么:

Cluster  Value      Resid       Cut-off Value (Interger)
 1        34        11.7668     1-36
 2        38.9      0.5328      36-40
 3        42.625    -13.2364    40-44

我的数据:

data maindat;
input  value Resid ;
datalines;
44  -4.300511714
44  -9.646920963
44  -15.86956805
43  -16.14857235
43  -13.05797186
43  -13.80941206
42  -3.521394503
42  -1.102526302
42  -0.137573583
42  2.669238665
42  -9.540489193
42  -19.27474303
42  -3.527077011
41  1.676464068
41  -2.238822314
41  4.663079037
41  -5.346920963
40  -8.543723186
40  0.507460641
40  0.995302284
40  0.464194011
39  4.728791571
39  5.578685423
38  2.771297564
38  7.109159247
37  15.96059456
37  2.985292226
36  -4.301136971
35  5.854674875
35  5.797294021
34  4.393329025
33  -6.622580905
32  0.268500302
27  12.23062252
;
run;

1 个答案:

答案 0 :(得分:1)

我认为你不一定能完全做到这一点。

k-means聚类使用您提供的所有变量之间的欧氏距离。这意味着它不仅仅使用value来集群观察:它也使用Resid

因此,如果value值更接近那么,它可能与群集2一起使用Resid似乎应该与群集3一起使用。

在您的示例中,如果您请求out数据集,您会看到这是真的。该out数据集的proc freq显示集群1有三行,其值为273738。群集2几乎包含所有行 - 除了总共7行外 - 从3244不等。群集3的范围从4044

因此,没有合理的方式来定义您的群集,就像您使用这种群集方法一样。群集通常由其质心定义,这是您使用outstat数据集获得的内容;您可以根据此确定应为哪个群集分配特定值。