我想使用R中的kmeans对我的定性数据进行聚类。数据代表商品ID,交易对手名称,监管机构,产品类型和错误类型。所有这些值都不是数字,我知道kmeans只适用于数值。我想基于错误类型进行聚类,并想知道哪些对手和监管机构在一起。我拥有的数据如下:
Reported_USI Counterparty Regulator Product_Type Error Code
ABC243 ABC CSA InterestRate G1234 1
ABC111 ABC CSA InterestRate G1234 1
TRE567 TRE CSA Equity G5689 2
YTY111 YTY CSA Equity G4523 3
DEF111 DEF CSA InterestRate G1234 1
CBC111 CBC CSA InterestRate G5689 2
TTT111 TTT CFTC Credit G4523 3
PPP111 PPP CFTC Credit G5555 4
GGG111 GGG CFTC Credit G5555 4
RRR111 RRR CFTC Credit G0000 5
EEE111 EEE CFTC Credit G0000 5
SSS111 SSS CSA InterestRate G0000 5
VVV111 VVV CSA ForeignExchange G1234 1
BBB111 BBB CSA ForeignExchange G5555 4
NNN111 NNN CSA InterestRate G4523 3
以下是代码:
cluster_file<-read.csv("Sample_clustering.csv")
cluster_file<-as.data.frame(cluster_file,row.names = NULL)
clusters<-kmeans(cluster_file[,6],4)$cluster
clusters1<-names(clusters[clusters==1])
我从1-5中给出了错误的数字。我想看看Counterparty和USI属于哪个集群,然后使用图表来可视化它。如果有人能给我一个方向,我会非常感激。我提供的数据是来自非常庞大的数据集的子集。希望我已经清楚了。谢谢。
编辑:我把代码放了。当我继续拉出与集群关联的USI的名称时,它返回了一个空值。答案 0 :(得分:1)
不要期待魔法。 kmeans不能做魔术。
执行最小二乘优化。它假设您有连续变量。
由拥有数据,这是正确的方法。
根据您的数据判断 k-means是错误的工具。如果我没有弄错,你试图只在最后一列上运行k-means,它只包含你的错误代码1,2,3,4,5的随机枚举? 您期望得到什么结果?!
事实上,我不认为任何群集会在您的数据集上产生统计上合理的结果,这也可能是随机字符串......
在你的情况下,在1,2,3,4,5错误代码上,这显然不能起作用。