You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Kohonen包som函数遇argument 'X'缺失报错,请求解决

解决Kohonen包SOM报错与六边形网格绘制问题

一、搞定Error in supersom(list(X), ...) : argument "X" is missing, with no default报错

这个报错的核心原因是你调用som()函数时参数传递不符合Kohonen包的规则,具体修正点如下:

  1. 参数名用错了:Kohonen包的som()函数里,输入数据的参数是X,不是data。你代码里写的som(data=data, grid=aGrid, ...)会让函数找不到输入数据,直接触发"X参数缺失"的错误。正确的调用方式应该是:

    # 方式1:显式指定X参数
    som_model <- som(X=preprocessed_data, grid=aGrid, ...)
    # 方式2:利用位置参数直接传数据(X是第一个参数)
    som_model <- som(preprocessed_data, grid=aGrid, ...)
    
  2. 确认预处理数据有效:还要检查你从usa.bg.som提取前7列并标准化后的数据是否没问题:

    • 用dim(preprocessed_data)查看维度,确保数据不是空的;
    • 用any(is.na(preprocessed_data))检查是否有缺失值,标准化过程如果遇到NA会影响后续训练,得先处理掉。

二、在Kohonen包中绘制六边形网格(替代Matlab SOM工具箱的圆形布局)

Kohonen包原生支持六边形拓扑的SOM,操作非常简单:

  1. 创建六边形网格:用somgrid()函数时,指定topology="hexagonal"(其实这是默认值,显式写出来更清晰):

    # 生成160×100的六边形网格
    aGrid <- somgrid(xdim = 160, ydim = 100, topology = "hexagonal")
    
  2. 训练后绘制六边形网格:SOM训练完成后,直接用plot()函数就能展示六边形布局的神经元。常用的绘图类型有:

    • 绘制神经元的权重向量:plot(som_model, type = "codes")
    • 展示每个神经元分配到的样本数量:plot(som_model, type = "counts")
    • 查看样本在网格上的分布:plot(som_model, type = "mapping")

    要是你想单独预览网格结构,直接运行plot(aGrid)就能看到完整的六边形网格布局,完美替代Matlab里的圆形排列效果。


内容的提问来源于stack exchange,提问作者ASKING

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 23:37:47