私は R-bloggers に関するこのブログ投稿を読んでいましたが、コードの最後のセクションに混乱しており、理解できません。
http://www.r-bloggers.com/self-organising-maps-for-customer-segmentation-using-r/
これを独自のデータで再現しようとしました。2755 ポイントの指数分布に従う 5 つの変数があります。
私は問題なく、それが生成するマップをプロットできます:
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)
私が理解しているように、コードのこのセクションは、マップ上に変数の 1 つをプロットして、それがどのように見えるかを確認していると思われますが、ここで問題が発生します。コードのこのセクションを実行すると、次の警告が表示されます。
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 には多くの繰り返し数値が含まれているため、これが行われたと思います。そのため、サイズが縮小されています。
問題は、警告について心配するかどうかです。正確なグラフを作成していますか?プロットコマンドで探している「プロパティ」のセクションは正確には何ですか? データを「集計」する別の方法はありますか?