我使用R中的Kohonen包创建了一个SOM地图,并希望在地图上标识特定的数据点位置。即使用的系列是一个由2列组成的矩阵,并且它增加了一行,我如何在地图本身或任何特定行上标记最后一次观察的位置?我使用的代码如下:
require(kohonen)
pretty_palette <- c("#1f77b4", '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2')
data_train <- na.omit(cbind(dataseries_1,dataseries_2))
data_train_matrix <- as.matrix(scale(data_train))
som_grid <- somgrid(xdim = 10, ydim=10, topo="hexagonal")
som_model <- som(data_train_matrix,
grid=som_grid,
rlen=100,
alpha=c(0.05,0.01),
keep.data=TRUE,
n.hood="circular")
som_cluster <- cutree(hclust(dist(som_model$codes)), 4)
plot(som_model, type="mapping", bgcol =pretty_palette[som_cluster] , main = "Regimes Map")
add.cluster.boundaries(som_model, som_cluster)
任何帮助表示赞赏
谢谢
答案 0 :(得分:0)
我在代码顶部添加了两行来表示一些数据。我想要的是能够在地图上标记脚本绘制::
的位置datapoint_to_flag <- tail(data_train_matrix,1)
在单元格中插入一个文本,其值(或最近)到datapoint_to_flag
到目前为止我编写的代码创建了一些随机序列,然后将它们绘制成4个簇,这个位我不知道如何write是在地图上本地化datapoint_to_flag
的位...如果这是有意义的。
require(kohonen)
pretty_palette <- c("#1f77b4", '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2')
dataseries1 <- rnorm(1000, mean = 0, sd = 3)
dataseries2 <- rnorm(1000, mean = 0, sd = 1)
data_train <- na.omit(cbind(dataseries1,dataseries2))
data_train_matrix <- as.matrix(scale(data_train))
som_grid <- somgrid(xdim = 20, ydim=20, topo="hexagonal")
som_model <- som(data_train_matrix,
grid=som_grid,
rlen=1000,
alpha=c(0.05,0.01),
keep.data=TRUE,
n.hood="circular")
som_cluster <- cutree(hclust(dist(som_model$codes)), 4)
plot(som_model, type="mapping", bgcol =pretty_palette[som_cluster] , main = "Regimes Map")
add.cluster.boundaries(som_model, som_cluster)
datapoint_to_flag <- tail(data_train_matrix,1)
谢谢
皮尔