【发布时间】:2018-12-24 13:08:10
【问题描述】:
训练 SOM 后,如何将新数据绘制到 SOM 上并可视化它如何映射到 SOM?理想情况下,我希望用相应的分类颜色和节点位置来绘制它。 identify() 能够根据 SOM 地图上的选择来精确定位数据,但它非常有限,一次只能做一个。我想映射整个(新)数据集并将其可视化。我可以使用map() 和组关联获取节点位置,但如何手动将新点绘制到 SOM 上?在互联网或 kohonen R 文档上找不到任何相关内容。感谢任何帮助。
library(kohonen)
data(wines)
wines.train<-wines[1:150,]
wines.test<-wines[151:nrow(wines),]
wines.sc <- scale(wines.train)
set.seed(7)
wines.som<-som(wines.sc, grid = somgrid(5, 4, "hexagonal"),rlen=150,alpha=c(0.05,0.01))
wines.hc<-cutree(hclust(dist(wines.som$codes[[1]])),6)
plot(wines.som,type="mapping",bgcol=rainbow(6)[wines.hc])
add.cluster.boundaries(wines.som,wines.hc)
可用于手动检查 SOM 上的特定节点
identify(wines.som$grid$pts,labels=as.vector(wines.hc),plot=T,pos=T)
将新数据映射到经过训练的 SOM
wines.map<-map(wines.som,scale(wines.test))
wines.test.grp<-sapply(wines.map$unit.classif,function(x) wines.hc[[x]])
【问题讨论】:
-
它是 kohonen 包的一部分。它是一个像 iris 数据集一样的公开数据集。只要您在加载 kohonen 包后运行
library(kohonen)和data(wines)。我忘了把这行代码放进去。抱歉。 -
感谢您的澄清。
-
运气好吗?
-
不难发现每个新点都在哪个簇。但是,我不明白点在集群中的位置。
-
是的,我在同一条船上。
标签: r neural-network cluster-analysis som self-organizing-maps