我构建了一个kmeans集群,我首先对R中的几个变量进行了规范化。该模型为我提供了集群中心,但它们显然处于规范化状态(如收入中心为-1.6)。
我想将-1.6转换回非标准化值,以便能够赋予其实际意义(如收入为42,000)。
现在我可以将z-score单独转换回一个值,但有几种规范化变量和R函数可以做到这一点吗?
我可以从pnorm()开始获取百分比 - 但是在我标准化它之前,我可以寻找更多可以应用回原始数据帧的东西。
答案 0 :(得分:4)
您需要标准偏差和原始数据的平均值。如果你有那些非规范化只是x = std * z + m,其中std和m是标准偏差和x的平均值。该等式直接来自z-score的定义。
答案 1 :(得分:0)
一旦进行了集群分配,最简单的方法就是计算(原始)数据的均值。例如,使用plyr:
# install.packages('plyr')
require(plyr)
dat <- mtcars[,1:4]
dat$cvar <- kmeans(scale(dat), 3)$cluster
ddply(dat, c("cvar"), colwise(mean))
cvar mpg cyl disp hp
1 1 13.41429 8.000000 390.5714 248.42857
2 2 23.97222 4.777778 135.5389 98.05556
3 3 16.78571 8.000000 315.6286 170.00000