zoukankan      html  css  js  c++  java
  • R语言kohonen包主要函数介绍

    最近准备写一篇关于自组织映射 (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,每个元素都是一个数据库。

    如果keep.data=False,predict的时候要指定trainingdata参数。

    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越多。

  • 相关阅读:
    codeforces C. Fixing Typos 解题报告
    codeforces B. The Fibonacci Segment 解题报告
    codeforces B. Color the Fence 解题报告
    codeforces B. Petya and Staircases 解题报告
    codeforces A. Sereja and Bottles 解题报告
    codeforces B. Levko and Permutation 解题报告
    codeforces B.Fence 解题报告
    tmp
    API 设计 POSIX File API
    分布式跟踪的一个流行标准是OpenTracing API,该标准的一个流行实现是Jaeger项目。
  • 原文地址:https://www.cnblogs.com/yaos/p/14014174.html
Copyright © 2011-2022 走看看