SOM 奇怪的绘图代码,建模中有超过 14 个变量

问题描述 投票:0回答:1

我正在做一些实验来了解 SOM(自组织地图)的工作原理,我尝试将该算法应用于电离层数据集。并发现代码图模型的行为很奇怪(如果应用了超过 14 个变量)..这是我的测试代码片段:

library(kohonen)
library(mlbench) #Ionosphere dataset is loaded from here

data(Ionosphere)
instance_data = Ionosphere

#====================================== Applying 5 Variable ======================================
data_train_matrix <- as.matrix(instance_data[,3:7])
som_grid <- somgrid(xdim = 5, ydim=5, topo="hexagonal")
som_model <- som(data_train_matrix, grid=som_grid, 
                 rlen=500, alpha=c(0.1,0.01), 
                 keep.data = TRUE)
plot(som_model, type="codes")

#========================================= 10 Columns ==============================================
data_train_matrix <- as.matrix(instance_data[,3:12])
som_grid <- somgrid(xdim = 5, ydim=5, topo="hexagonal")
som_model <- som(data_train_matrix, grid=som_grid, 
                 rlen=500, alpha=c(0.1,0.01), 
                 keep.data = TRUE)
plot(som_model, type="codes")

#========================================= 14 Variable ==============================================
data_train_matrix <- as.matrix(instance_data[,5:18])
som_grid <- somgrid(xdim = 5, ydim=5, topo="hexagonal")
som_model <- som(data_train_matrix, grid=som_grid, 
                 rlen=500, alpha=c(0.1,0.01), 
                 keep.data = TRUE)
plot(som_model, type="codes")

#========================================= 15 Variable ==============================================
data_train_matrix <- as.matrix(instance_data[,5:19])
length_col = length(colnames(data_train_matrix))
som_grid <- somgrid(xdim = 5, ydim=5, topo="hexagonal")
som_model <- som(data_train_matrix, grid=som_grid, 
                 rlen=500, alpha=c(0.1,0.01), 
                 keep.data = TRUE)
plot(som_model, type="codes")

我想知道这在情节代码中意味着什么?看到这个我的想法:

1) 这是否表明 SOM 模型不支持同时绘制多个变量?

2)或者最后一张图有什么含义吗?

3) 另外,如果像上图那样出现绘图代码,继续使用 SOM 进行分析是否安全?

请帮忙提供一些反馈,谢谢您的支持:)

r som
1个回答
0
投票

我也遇到了和你一样的问题。我尝试绘制包含 17 个变量的 SOM 然而,我发现了这个:

我的代码(作为示例):

plot(som.model, type = "codes",
     codeRendering = "segments",
     bgcol = rainbow(9)[clust$cluster],
     shape = "round",
     main = "Cluster Map")

如果添加以下行:

codeRendering = "segments"
,您就会得到所需的内容。

© www.soinside.com 2019 - 2024. All rights reserved.