最近准备写一篇关于自组织映射 (Self-organizing map)的文章。SOM的代码很多,研究了一圈之后目前使用最顺手的是R语言的kohonen包。

这个kohonen包功能很丰富,但是接口不是特别合理。R语言包大部分是统计学家写的,功能强大,数学上严谨,但是不怎么考虑代码的规范和简洁。

kohonen最重要的四个函数:

  1. som
  2. xyf
  3. supersom
  4. somgrid

这个命名的随意性容易让程序员抓狂。简单说,somxyfsupersom的封装版本,分别对应单层SOM和双层SOM,如果是两层以上的多层SOM,必须使用supersom。这里需要注意一下函数的输入参数。

主要函数

som(X,...)
xyf(X, Y, ...)
supersom(data, grid=somgrid(), rlen = 100, alpha = c(0.05, 0.01),
radius = quantile(nhbrdist, 2/3),
whatmap = NULL, user.weights = 1, maxNA.fraction = 0L,
keep.data = TRUE, dist.fcts = NULL,
mode = c("online", "batch", "pbatch"), cores = -1, init,
normalizeDataLayers = TRUE)

som中的参数X是输入的数据集,可以是矩阵,不能是data frame。需要注意,xyf中的XY都是输入的数据集,并不是指输入和输出。xyf用于双层SOM,所以X和Y分别对应各自的Layer层。

supersom中的data参数应对输入的数据库,如果是多层SOM,data是一个列表list,每个元素都是一个数据库。

somgrid函数

主要函数中,除了数据集以外,另外主要参数是somgrid()函数,用于建立SOM网络。其他参数可以使用默认值,但是somgrid()必须给定。

somgrid(xdim = 8, ydim = 6, topo = c("rectangular", "hexagonal"),
neighbourhood.fct = c("bubble", "gaussian"), toroidal = FALSE)

xdimydimtopo是SOM网络的最基本拓扑信息,包括网络大小和拓扑形状。 neighbourhood.fct是邻域函数,可以选高斯函数和“泡泡”bubble函数。 高斯函数和bubble函数的区别会在另一篇文章中详细介绍。toroidal函数设置为TRUE可以把默认的SOM拓扑图变成环形。此时的SOM拓扑相当于是把环形切割后并展开。toroidal的作用看情况,它主要改变的是SOM的拓扑关系,对训练结果本身并没有影响。

可视化

plot(x, type = c("codes", "changes", "counts",
"dist.neighbours", "mapping", "property", "quality"),
whatmap = NULL, classif = NULL, labels = NULL,
pchs = NULL, main = NULL, palette.name = NULL,
ncolors, bgcol = NULL, zlim = NULL,
heatkey = TRUE, property, codeRendering = NULL,
keepMargins = FALSE, heatkeywidth = .2,
shape = c("round", "straight"), border = "black",
na.color = "gray", …)

SOM会调用系统的plot函数,x是训练好的SOM,type是画图类型,比如

changes:训练过程中the mean distance to the closest codebook vector

codes:SOM中的codebook vector

counts:SOM中每个单元对应的sample数量





实际使用中,习惯把counts图中的颜色反过来,即越深的单元表示上面的sample越多。

R语言kohonen包主要函数介绍的更多相关文章

  1. R语言 arules包 apriori()函数中文帮助文档(中英文对照)

    apriori(arules) apriori()所属R语言包:arules                                         Mining Associations w ...

  2. R语言 ggplot2包

    R语言  ggplot2包的学习   分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...

  3. R语言-神经网络包RSNNS

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  4. R语言dplyr包初探

    昨天学了一下R语言dplyr包,处理数据框还是很好用的.记录一下免得我忘记了... 先写一篇入门的,以后有空再写一篇详细的用法. #dplyr learning library(dplyr) #fil ...

  5. R语言-Knitr包的详细使用说明

    R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...

  6. R语言扩展包dplyr——数据清洗和整理

    R语言扩展包dplyr——数据清洗和整理 标签: 数据R语言数据清洗数据整理 2015-01-22 18:04 7357人阅读 评论(0) 收藏 举报  分类: R Programming(11)  ...

  7. 安装R语言的包的方法

    安装R语言的包的方法: 1. 在线安装 在R的控制台,输入类似install.packages("TSA")  # 安装 TSA install.packages("TS ...

  8. python 和 R 语言 中的 range() 函数

    1.python 中的 range() 函数生成整数序列,常用于 for 循环的迭代. 示例: 2.R 语言中的 range() 函数返回一个数值向量中的最小值和最大中,常用于求极差. 示例: 按语: ...

  9. R语言实战(一)介绍、数据集与图形初阶

    本文对应<R语言实战>前3章,因为里面大部分内容已经比较熟悉,所以在这里只是起一个索引的作用. 第1章       R语言介绍 获取帮助函数 help(), ? 查看函数帮助 exampl ...

随机推荐

  1. 【NLP面试QA】预训练模型

    目录 自回归语言模型与自编码语言 Bert Bert 中的预训练任务 Masked Language Model Next Sentence Prediction Bert 的 Embedding B ...

  2. python-文本字符串

    2019-12-05 14:41:36 一.Unicode 编码问题一直都是文本处理的时候的大难题,python2中的编码异常混乱,本章节主要讨论python3中的编码情况. python3 str的 ...

  3. ysoserial分析【二】7u21和URLDNS

    目录 7u21 gadget链分析 hashCode绕过 参考 URLDNS 7u21 7u21中利用了TemplatesImpl来执行命令,结合动态代理.AnnotationInvocationHa ...

  4. 解决 Mac Android Studio Gradle Sync 慢的问题

    1.启动Android Studio 2.从项目的 gradle/wrapper/gradle-wrapper.properties 目录中找到 distributionUrl 这个字段,查看后面对应 ...

  5. java物流查询接口测试代码-快递100

    测试代码 返回json格式,xml/html格式自行修改参数 import java.io.IOException; import java.io.InputStream; import java.n ...

  6. DrQA 阅读维基百科来回答开放问题 Reading Wikipedia to Answer Open-Domain Questions

    DrQA 是一个阅读理解系统用在开放领域问答.特别的,DrQA 针对一个机器阅读任务.在这个列表里,我们为一个潜在非常大的预料库中搜索一个问题的答案.所以,这个系统必须结合文本检索和机器文本理解. 项 ...

  7. PyTorch专栏(二)

    专栏目录: 第一章:PyTorch之简介与下载 PyTorch简介 PyTorch环境搭建 第二章:PyTorch之60min入门 PyTorch 入门 PyTorch 自动微分 PyTorch 神经 ...

  8. 三层架构——ATM + 购物车

    三层架构:用户视图层.逻辑接口层.数据处理层. 一个功能,分成三层架构写,增加程序的可扩展性. 三层是互有联系的,从用户视图层开始写,涉及到那一层就到下一层去写,然后return 返回值,再写回来. ...

  9. 商品spu 和 sku的关系

    总结一下在目前的电商系统中的商品涉及的属性spu,sku.搞清楚两者之间的关系对表的设计非常重要 spu Standard Product Unit (标准产品单位) ,一组具有共同属性的商品集 SK ...

  10. Matlab GUI设计(2)

    11. (1)界面设计 (2)添加按钮的回调函数 function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle ...