将 SOMbrero 包中的集群和节点添加到训练数据中

2023-12-28

我正在玩一点SOMbrero https://cran.r-project.org/web/packages/SOMbrero/SOMbrero.pdf包裹。我想附上像这样创建的簇号(取自here https://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html):

my.sc <- superClass(iris.som, k=3)

以及 SOM 节点到训练数据集的 X 和 Y 坐标。

在某些代码中,我使用 kohonen 包,创建如下集群:

range01 <- function(x){(x-min(x))/(max(x)-min(x))}

ind <- sapply(SubsetData, is.numeric)
SubsetData[ind] <- lapply(SubsetData[ind], range01)

TrainingMatrix <- as.matrix(SubsetData)

GridDefinition <- somgrid(xdim = 4, ydim = 4, topo = "rectangular", toroidal = FALSE)

SomModel <- som(
    data = TrainingMatrix,
    grid = GridDefinition,
    rlen = 10000,
    alpha = c(0.05, 0.01),
    keep.data = TRUE
)

nb <- table(SomModel$unit.classif)
groups = 5
tree.hc = cutree(hclust(d=dist(SomModel$codes[[1]]),method="ward.D2",members=nb),groups)

plot(SomModel, type="codes", bgcol=rainbow(groups)[tree.hc])

add.cluster.boundaries(SomModel, tree.hc)
result <- OrginalData
result$Cluster <- tree.hc[SomModel$unit.classif]
result$X <- SomModel$grid$pts[SomModel$unit.classif,"x"]
result$Y <- SomModel$grid$pts[SomModel$unit.classif,"y"]

write.table(result, file = "FinalData.csv", sep = ",", col.names = NA, quote = FALSE)

PS:

可以找到一些使用 iris 数据集的示例代码here https://github.com/cran/SOMbrero/blob/master/demo/numeric.R.

PPS:

我玩了一下上面引用的 iris 代码,认为我已经成功提取了集群、节点 ID 和原型(请参阅下面的代码)。缺少的是坐标 X 和 Y。我认为它们在这里:

iris.som$parameters$the.grid$coord

Code:

library(SOMbrero)

set.seed(100)
setwd("D:\\RProjects\Clustering")

#iris.som <- trainSOM(x.data=iris[,1:4],dimension=c(10,10), maxit=100000, scaling="unitvar", radius.type="gaussian")
iris.som <- trainSOM(x.data=iris[,1:4],dimension=c(3,3), maxit=100000, scaling="unitvar", radius.type="gaussian")

# perform a hierarchical clustering
## with 3 super clusters
iris.sc <- superClass(iris.som, k=3)
summary(iris.sc)

# compute the projection quality indicators
quality(iris.som)

iris1 <- iris
iris1$Cluster = iris.sc$cluster[iris.sc$som$clustering]
iris1$Node = iris.sc$som$clustering
iris1$Pt1Sepal.Length = iris.sc$som$prototypes[iris.sc$som$clustering,1]
iris1$Pt2Sepal.Width = iris.sc$som$prototypes[iris.sc$som$clustering,2]
iris1$Pt3Petal.Length = iris.sc$som$prototypes[iris.sc$som$clustering,3]
iris1$Pt4Petal.Width = iris.sc$som$prototypes[iris.sc$som$clustering,4]

write.table(iris1, file = "Iris.csv", sep = ",", col.names = NA, quote = FALSE)

我想我已经使用 iris 示例弄清楚了(请更正/改进代码!-我对 R 不太流利):

library(SOMbrero)

set.seed(100)
setwd("D:\\RProjects\\SomBreroClustering")

iris.som <- trainSOM(x.data=iris[,1:4],dimension=c(5,5), maxit=10000, scaling="unitvar", radius.type="letremy")

# perform a hierarchical clustering
# with 3 super clusters
iris.sc <- superClass(iris.som, k=3)
summary(iris.sc)

# compute the projection quality indicators
quality(iris.som)

iris1 <- iris
iris1$Cluster = iris.sc$cluster[iris.sc$som$clustering]
iris1$Node = iris.sc$som$clustering
iris1$Pt1Sepal.Length = iris.sc$som$prototypes[iris.sc$som$clustering,1]
iris1$Pt2Sepal.Width = iris.sc$som$prototypes[iris.sc$som$clustering,2]
iris1$Pt3Petal.Length = iris.sc$som$prototypes[iris.sc$som$clustering,3]
iris1$Pt4Petal.Width = iris.sc$som$prototypes[iris.sc$som$clustering,4]
iris1$X = iris.som$parameters$the.grid$coord[iris.sc$som$clustering,1]
iris1$Y = iris.som$parameters$the.grid$coord[iris.sc$som$clustering,2]

write.table(iris1, file = "Iris.csv", sep = ",", col.names = NA, quote = FALSE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 SOMbrero 包中的集群和节点添加到训练数据中 的相关文章

  • 为什么我收到保存错误、软盘错误的消息?

    我最近更新了 R 和 R studio 当我尝试保存文件时 收到一条错误消息 保存 文件名 时出错 驱动器中的软盘错误 将 2 卷序列号 3 插入驱动器 1 这是第一次看到这个错误信息 不知道该怎么办 我也无法 另存为 感谢您的帮助 尝试使
  • 基于多列重新编码数据框列[重复]

    这个问题在这里已经有答案了 如何根据其他列的值重新编码列 假设我有以下数据框 我想重新编码df Col3使得该值为 0 如果df Col1 x and df Col2 a gt df lt data frame a c rep x 3 re
  • 使用 data() 的 R 包命名空间问题 -- 找不到数据集

    我在尝试在我自己的包中导入包 即 robfilter 时遇到了问题 我尝试使用它的方法之一 adore filter 在这一行失败 data critvals 出现错误 未找到数据集 critvals 如果我通过 require robfi
  • R 中带有变音符号的字符列表

    我试图将字符串中的电话 字符 出现次数制成表格 但变音符号单独作为字符制成表格 理想情况下 我有一个国际音标的单词列表 其中包含大量变音符号以及它们与基本字符的几种组合 我在这里给出了仅包含一个单词的 MWE 但对于单词列表和更多类型的组合
  • R中不重复的组合

    我试图获取变量元素长度为 3 的所有可能组合 虽然它部分地与combn 一起工作 但我没有完全得到我正在寻找的输出 这是我的例子 x lt c a b c d e t combn c x x 3 我得到的输出看起来像这样 1 2 3 1 a
  • 有条件地将字符串转换为特定数值

    我确信对此有一个简单的答案 但我已经扫描了堆栈溢出 但无法找到解决方案 似乎 sapply 和 ifelse 函数的组合可能可以完成这项工作 但我不确定 所以我有一个包含字符的数据框 除了一列是数值 Create dataframe whi
  • 在函数中调用其他列的控制流程

    我正在尝试在给定条件的情况下连接到函数中的其他列 本质上 我想让数据框在给定条件的情况下从长到宽 其中一列中的这些值是NA相对于同一行中具有值的另一列 转动NAs转化为特定的数字 尽管分配的值必须是特定于列的 因此 如果2010 has N
  • R data.table:在当前测量之前对出现次数进行计数

    我有一组在几天内进行的测量结果 测量次数通常为 4 任何测量中可以捕获的数字范围为 1 5 在现实生活中 给定测试集 范围可能高达 100 或低至 20 我想每天计算每个值在当天之前发生的次数 让我用一些示例数据来解释 test data
  • 将日期刻度添加到 R 中的 ggplot

    我试图在此图中的 x 轴上添加刻度以显示一年中的所有月份 我的代码如下 library ggplot2 library scales p lt ggplot df test aes time reading p geom point alp
  • 无法将 bigrquery 与标准 sql 一起使用

    我正在 R ipython 笔记本 相对 R 新手 中工作 并尝试使用 bigrquery 从 Google Big Query 中提取数据 我被告知这应该很简单 但使用标准 sql 提取不起作用 这是我的代码 require bigrqu
  • 在r中的数据框中循环线性回归输出

    我有一个下面的数据集 我想在其中对每个国家和州进行线性回归 然后绑定数据集中的预测值 添加另外三列后的最终数据框 我已经对一个国家和一个地区进行了此操作 但想对每个国家和地区进行此操作 并将预测值 上限值和下限值放回到cbind的数据集中
  • 包含多行 LaTeX 方程的 R 帮助页面

    我正在编写 R 包文档roxygen2 我想将以下多行方程插入到帮助页面中 但我的 LaTeX 代码没有被渲染 hello2 description deqn F t begin cases alpha t f L t 1 alpha t
  • 在 Rdata 中保存矩阵并更新 Rdata 文件

    我有一个矩阵 mat lt matrix data 1 30 ncol 10 nrow 3 我想将其保存到 Rdata save mat file m Rdata 然后加载回来 m lt load m Rdata 然后看看它的内容 m 1
  • R 中的数据转换

    我需要以不同的方式查看数据框中的数据 问题就在这里 我有一个数据框如下 Person Item BuyOrSell 1 a B 1 b S 1 a S 2 d B 3 a S 3 e S 我需要把它改造成这样 显示该人在单个项目上进行的所有
  • 从上一列中减去一列

    样本数据 dfData lt data frame ID c 1 2 3 4 5 DistA c 10 8 15 22 15 DistB c 15 35 40 33 20 DistC c 20 40 50 45 30 DistD c 60
  • 在具有重复观察的行之间生成精确加权平均值

    我有一个类似于下面生成的数据框 有些人对某一特定变量有多个观察值 并且每个变量都有一个相关的估计标准误差 SE 我想创建一个新的数据框 其中每个人仅包含一行 对于具有多个观察值的个人 例如 Kim 或 Bob 我需要根据估计值的标准误差以及
  • 在动画 ggplot2 中的轴标签上包含图像

    我创建了一个动画条形图 显示玩家的进球数 虚构 请参阅示例的复制数据 df lt data frame Player rep c Aguero Salah Aubameyang Kane 6 Team rep c ManCity Liver
  • 如何使用 dplyr 将 2 个列集的内连接的列名称作为变量传递

    我一直在研究各种将列名作为变量传递的建议方法 例如使用 bang bang xvar as name xvar 和其他各种方法 但我无法让它工作 有谁知道如何传递使用的列名mtcars在下面的管道中作为变量 i e xvar lt mpg
  • Predict.randomForest 中的错误

    我希望有人能够帮助我解决 R 中 randomForest 包的预测函数遇到的问题 当我尝试预测测试数据时 我不断收到相同的错误 到目前为止 这是我的代码 extractFeatures lt function RCdata feature
  • 如何在R中生成多个矩阵

    我在 R 中得到了两个值列表 daily max car List 1 21 21 22 22 22 22 21 daily 0 8 List 2 16 17 17 17 18 17 17 尝试在 R Studio 中编写一个 For 循环

随机推荐