我正在閱讀關於R-bloggers的這篇博客文章,我對代碼的最後部分感到困惑,無法弄清楚。在R中繪製Kohonen地圖的錯誤?
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裏面有很多重複的數字,這就是爲什麼它的大小減小了。
問題是,我擔心警告嗎?它是否產生了一個精確的圖表? 「屬性」的部分究竟是在繪圖命令中尋找的部分?有什麼不同的方式可以「彙總」數據?
如果情節如不正確則是,擔心警告。實際上,你應該始終關注你爲什麼會收到警告。我還沒有完全檢查出來,但是我發現你在'aggregate'結尾有一個子集。這是必要的嗎? – 2014-09-22 01:19:08
您應該提供[可重現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),以便我們可以運行與您相同的代碼並獲得同樣的錯誤。否則,我們實際上無法知道您的數據如何存儲在每個對象中,或者它們應該如何在plot語句中組合。 – MrFlick 2014-09-22 03:00:14
調色板'coolBlueHotRed'從哪裏來,它的長度是多少?它可能被配置爲匹配示例數據,而不是您的數據。 – 2014-09-22 11:37:18