0

我使用 R 中的 Kohonen 包将 SOM 应用于我拥有的基因组数据集。SOM 有 55 个变量。我想将这些变量的代码子集绘制为扇形图。例如,仅使用 R 中固有的 wine 数据集:

library(kohonen)
data(wines)
set.seed(7)

training <- sample(nrow(wines), 120)
Xtraining <- scale(wines[training, ])
Xtest <- scale(wines[-training, ],
           center = attr(Xtraining, "scaled:center"),
           scale = attr(Xtraining, "scaled:scale"))

som.wines <- som(Xtraining, grid = somgrid(5, 5, "hexagonal"))
plot(som.wines, type="codes")

这将每个节点上每个预测变量的权重绘制为扇形图。在这种情况下,我想做的是情节说,只有镁、灰、苹果酸和类黄酮在粉丝情节中。

plot(som.wines, type = "property", property = som.wines$codes[,'magnesium'])

将绘制每个节点上镁的权重。

做类似的事情

plot(som.wines, type = "property", property =som.wines$codes[,c('magnesium','ash')])

只需用每个节点的灰分权重覆盖镁权重。

另外像:

plot(som.wines, type = "codes", property = som.wines$codes[,c('magnesium','ash')],)

也不行。

任何帮助将不胜感激。

4

1 回答 1

0

好吧,我们知道

class(som.wines)
# [1] "kohonen"

所以这里触发的绘图方法是kohonen:::plot.kohonen. 当您设置 type="codes" 时,这会将命令外包给kohonen:::plot.kohcodes. 经检查,它似乎只使用了您传递给它的对象的$codesand$grid属性。如果您想直接对这些值进行子集化,这似乎是安全的。例如

keep <- c("magnesium", "ash", "malic acid", "flavonoids")
xx <- som.wines
xx$codes<-xx$codes[,keep]
plot(xx, type="codes")

这产生

在此处输入图像描述

于 2016-09-10T04:45:38.763 回答