【问题标题】:Self Organizing Network Plot Subset of Codes自组织网络图代码子集
【发布时间】:2016-09-10 12:45:38
【问题描述】:

我使用 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')],)

也不行。

任何帮助将不胜感激。

【问题讨论】:

  • 您应该提供某种形式的reproducible example 以及我们可以运行的示例输入数据,以便我们可以看到您所看到的内容。描述您希望如何选择预测变量的子集。现在我真的不确定你在寻找什么样的答案。
  • 嗨 MrFlick,感谢您的建议 - 我已经更新了我的问题,这应该更具解释性。

标签: r som


【解决方案1】:

嗯,我们知道

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

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

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

这会产生

【讨论】:

  • 正是我需要的。谢谢一百万。
猜你喜欢
  • 2022-10-25
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
相关资源
最近更新 更多