我在对交通事故数据进行pam聚类的时候发现了以下问题:
- 在平均轮廓系数为0.41的情况下,所有类别中与中心点的属性取值相同的样本没有全部分到该中心点所在的类别中。比如全部样本376,第一类有102个,但是与第一类的中心点属性取值的样本只有7个,而在全部样本中有48个,也就是说48-7个样本被分配道路其他的类中。所以想问这种情况是合理的吗?
- 我对数据随机打乱顺序后与未打乱之前的聚类结果不同,请问这是什么原因?
我使用的方法是输入经过独热编码后的excel数据,采用曼哈顿距离进行pam聚类(认为经过独热编码处理曼哈顿距离和汉明距离是等效的)
我的代码如下:
library(readxl)
df_onehot <- read_excel("聚类测试\\添加碰撞位置or伤情\\data2_1_new3_ohe.xls", sheet=1)
# library(e1071)
# df_matrix <- as.matrix(df_onehot) ## df_onehot 瀵瑰簲浣犵殑dataframe
# hamming.d <- matrix(0,376,376)
# for(i in 1:nrow(df_onehot)){
# for(j in 1:nrow(df_onehot)){
# hamming.d[i,j] <- hamming.distance(df_matrix[i,],df_matrix[j,])
# }
# }
library(fpc)
mhd2 <- pamk(df_onehot,krang=2:15,metric = 'manhattan',criterion = 'asw',)
#mhd2 <- pamk(hamming.d ,krang=2:15,diss = TRUE,criterion = 'asw',)
#kc2 <- pamk(df_onehot,krang=2:15,metric = 'manhattan',criterion = 'wss')
library(cluster)
best.nc <- mhd2$nc
win.graph()
plot(pam(df_onehot, 4,metric = 'manhattan'))
kclus2<-pam(df_onehot,4,metric = 'manhattan',trace.lev=50)
#kclus2<-pam(hamming.d,4,diss = TRUE,trace.lev=20)
我的环境是win10,Rstudio