【发布时间】:2020-03-19 12:14:50
【问题描述】:
我正在尝试在 kohonen 包中应用 som 函数(绘制 SOM),但出现以下错误:
supersom(list(X), ...) 中的错误:缺少参数“X”,没有默认值。
我尝试应用的代码如下:
...
load("somInput.rdata")
...
aGrid <- somgrid(xdim = 160, ydim = 100, topo="hexagonal")
data <- as.matrix(scale(na.omit(usa.bg.som[,1:7])))
aSom <- som(data=data, grid=aGrid, rlen=1, alpha=c(0.05, 0.01), keep.data=FALSE)
在上面的最后一行之后我得到了错误。
谁能解决这个错误?帮助是受人尊敬的。
完整代码:
##CODE FOR BRUNDSON AND SINGLETON BOOK CHAPTER.
##LIBRARIES
library(kohonen)
##Code for Plots
source("somComponentPlanePlottingFunction.R")
#source("Map_COUNTY_BMU.R")
source("plotUMatrix.R")
#Load Data
##DATA FOR ALL BLOCKGROUPS IN THE US
##SOURCE ACS 2006-2010 AND CENSUS 2010
load("somInput.rdata")
#Build SOM
aGrid <- somgrid(xdim = 160, ydim = 100, topo="hexagonal")
##NEXT LINE IS SLOW!!!
##Rlen is arbitrarily low
data <- as.matrix(scale(na.omit(usa.bg.som[,1:7])))
aSom <- som(data=data, grid=aGrid, rlen=1, alpha=c(0.05, 0.01), keep.data=FALSE)
##VISUALIZE RESULTS
##COMPONENT PLANES
dev.off()
par(mar = rep(1, 4))
cplanelay <- layout(matrix(1:8, nrow=4))
vars <- colnames(aSom$data[[1]])
for(p in vars) {
plotCplane(som_obj=aSom, variable=p, legend=FALSE, type="Quantile")
}
plot(0, 0, type = "n", axes = FALSE, xlim=c(0, 1),
ylim=c(0, 1), xlab="", ylab= "")
par(mar = c(0, 0, 0, 6))
image.plot(legend.only=TRUE, col=rev(designer.colors(n=50, col=brewer.pal(9, "Spectral"))), zlim=c(-1.5,1.5))
##END PLOT
##PLOT U-MATRIX
dev.off()
plotUmat(aSom)
完整的代码可以从:
https://github.com/geoss/som_visualization_r/blob/master/Example.R
可以从以下位置查看和检索其他需要的文件:
https://github.com/geoss/som_visualization_r
关于如何在 R 中的 SOM 中绘制六边形网格的问题:
R package Kohonen - how to plot hexagons instead of circles as in Matlab SOM toolbox?
【问题讨论】: