【发布时间】:2017-05-19 06:57:10
【问题描述】:
我正在使用此代码,它适合自组织图 (SOM),然后对生成的原型向量进行聚类以定义聚类边界:
library(dplyr)
library(kohonen)
setwd('C:\\Users\\Bla\\Source\\Repos\\SomeExcitingRepo')
OrginalData <- read.table("IrisData.txt",
header = TRUE, sep = "\t")
SubsetData <- subset(OrginalData, select = c("SepalLength", "SepalWidth", "PetalLength", "PetalWidth"))
TrainingMatrix <- as.matrix(scale(SubsetData))
GridDefinition <- somgrid(xdim = 4, ydim = 4, topo = "hexagonal")
SomModel <- kohonen::supersom(data = TrainingMatrix, grid = GridDefinition, rlen = 1000, alpha = c(0.05, 0.01),
keep.data = TRUE)
groups = 3
iris.hc = cutree(hclust(dist(SomModel$codes[[1]])), groups)
plot(SomModel, type = "codes", bgcol = rainbow(groups)[iris.hc])
add.cluster.boundaries(SomModel, iris.hc)
数据是 iris 数据集,但这只是一个示例。数据集格式如下:
Uid SepalLength SepalWidth PetalLength PetalWidth Species
1 5.1 3.5 1.4 0.2 setosa
现在让我们假设这是一个看不见的数据集。我想对其进行规范化并将其呈现给 SOM,然后在每一行中添加额外的列,指示 SOM 的簇号(1、2、3 参见上面的示例)以及获胜节点的 x 和 y 坐标。示例:
Uid SepalLength SepalWidth PetalLength PetalWidth Species Cluster X Y
1 5.1 3.5 1.4 0.2 setosa 3 3 4
【问题讨论】:
标签: r