R语言kohonen包主要函数介绍
最近准备写一篇关于自组织映射 (Self-organizing map)的文章。SOM的代码很多,研究了一圈之后目前使用最顺手的是R语言的kohonen包。
这个kohonen包功能很丰富,但是接口不是特别合理。R语言包大部分是统计学家写的,功能强大,数学上严谨,但是不怎么考虑代码的规范和简洁。
kohonen最重要的四个函数:
somxyfsupersomsomgrid
这个命名的随意性容易让程序员抓狂。简单说,som和xyf是supersom的封装版本,分别对应单层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中的X和Y都是输入的数据集,并不是指输入和输出。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)
xdim,ydim和topo是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包主要函数介绍的更多相关文章
- R语言 arules包 apriori()函数中文帮助文档(中英文对照)
		
apriori(arules) apriori()所属R语言包:arules Mining Associations w ...
 - R语言 ggplot2包
		
R语言 ggplot2包的学习 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...
 - R语言-神经网络包RSNNS
		
code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...
 - R语言dplyr包初探
		
昨天学了一下R语言dplyr包,处理数据框还是很好用的.记录一下免得我忘记了... 先写一篇入门的,以后有空再写一篇详细的用法. #dplyr learning library(dplyr) #fil ...
 - R语言-Knitr包的详细使用说明
		
R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...
 - R语言扩展包dplyr——数据清洗和整理
		
R语言扩展包dplyr——数据清洗和整理 标签: 数据R语言数据清洗数据整理 2015-01-22 18:04 7357人阅读 评论(0) 收藏 举报 分类: R Programming(11) ...
 - 安装R语言的包的方法
		
安装R语言的包的方法: 1. 在线安装 在R的控制台,输入类似install.packages("TSA") # 安装 TSA install.packages("TS ...
 - python 和 R 语言 中的 range() 函数
		
1.python 中的 range() 函数生成整数序列,常用于 for 循环的迭代. 示例: 2.R 语言中的 range() 函数返回一个数值向量中的最小值和最大中,常用于求极差. 示例: 按语: ...
 - R语言实战(一)介绍、数据集与图形初阶
		
本文对应<R语言实战>前3章,因为里面大部分内容已经比较熟悉,所以在这里只是起一个索引的作用. 第1章 R语言介绍 获取帮助函数 help(), ? 查看函数帮助 exampl ...
 
随机推荐
- Recover刷机简介
			
Recovery Recovery是一种可以对安卓手机内部的数据文件进行修改的模式,类似电脑的PE.不同的recovery有不同的功能.使用recovery可以说是刷机(卡刷)的基础,想要比较顺畅的刷 ...
 - [IROS 2018]Semantic Mapping with Simultaneous Object Detection and Localization
			
论文地址:https://arxiv.org/abs/1810.11525 论文视频:https://www.youtube.com/watch?v=W-6ViSlrrZgwww.youtu ...
 - Linux网络学习笔记(二):域名解析(DNS)——以 CoreDNS 为例
			
个人笔记,观点不一定正确. 适合对 Kubernetes 有一定了解的同学. 前言 最近一直在学习 Kubernetes,但是手头没有个自有域名,要测试 ingress 就比较麻烦,每次都是手动改 h ...
 - TPYBoard v202开发板通过I2C协议驱动oled
			
最近无聊的时候研究了一下TPYBoard v202开发板,发现网上TPYBoard开发驱动oled的这块资料比较少,本人测试成功后给大家分享一下经验 下面通过代码讲解一下 1.首先需要导包, 在网上下 ...
 - css 重排与重绘
			
css 重绘与重排 我们要知道当浏览器下载完页面的所有资源后,就会开始解析源代码. HTML 会被解析成 DOM Tree,Css 则会被渲染成 CSSOM Tree,最后它们会附加到一起,形成渲染树 ...
 - 模型压缩一半,精度几乎无损,TensorFlow推出半精度浮点量化工具包,还有在线Demo...
			
近日,TensorFlow模型优化工具包又添一员大将,训练后的半精度浮点量化(float16 quantization)工具. 有了它,就能在几乎不损失模型精度的情况下,将模型压缩至一半大小,还能改善 ...
 - 维护你的请求队列,处理token异常
			
前言 网络请求是开发中最基础也是最核心的需求,封装一个稳定且可用性高的请求也显得尤为重要.通常封装的内容除了入参之外,更多的是请求中的异常处理.本文分享下我在处理 token 异常方面的做法,通过维护 ...
 - python实现十大经典排序算法
			
Python实现十大经典排序算法 代码最后面会给出完整版,或者可以从我的Githubfork,想看动图的同学可以去这里看看: 小结: 运行方式,将最后面的代码copy出去,直接python sort. ...
 - Reface.AppStarter 框架初探
			
Reface.AppStarter 是一种基于 .NetFramework 的应用程序启动模式,使用该启动模式,你可以轻松的得到以下功能 : IOC / DI 自动注册与装配 简化配置 垂直模块化你的 ...
 - docker 本地镜像导入导出 compose安装
			
docker 本地镜像导入导出 1.Docker导入本地gz镜像 [root@rocketmq-nameserver4 dev]# cat alibaba-rocketmq-3.2.6.tar.gz ...