我正在阅读 R-bloggers 上的这篇博客文章,我对代码的最后一部分感到困惑,无法弄清楚。
http://www.r-bloggers.com/self-organising-maps-for-customer-segmentation-using-r/
我试图用我自己的数据重新创建它。我有 5 个变量遵循 2755 个点的指数分布。
我很好并且可以绘制它生成的地图:
plot(som_model, type="codes")
我不明白的代码部分是:
var <- 1
var_unscaled <- aggregate(as.numeric(training[,var]),by=list(som_model$unit.classif),FUN = mean, simplify=TRUE)[,2]
plot(som_model, type = "property", property=var_unscaled, main = names(training)[var], palette.name=coolBlueHotRed)
据我了解,这部分代码应该在地图上绘制一个变量以查看它的外观,但这是我遇到问题的地方。当我运行这部分代码时,我收到警告:
Warning message:
In bgcolors[!is.na(showcolors)] <- bgcol[showcolors[!is.na(showcolors)]] :
number of items to replace is not a multiple of replacement length
它产生了情节:
只是有些看起来不太对...
现在我认为它归结为聚合函数重新排序数据的方式。var_unscaled 的长度是 789,som_model$data、training[,var] 和 unit.classif 的长度都是 2755。我尝试绘制聚合数据,结果没有警告,而是一个难以理解的图形(如预期的那样)。
现在我认为它已经这样做了,因为 unit.classif 里面有很多重复的数字,这就是它缩小的原因。
问题是,我担心警告吗?它是否产生了准确的图表?在 plot 命令中寻找的“属性”部分到底是什么?有没有不同的方法可以“聚合”数据?