language: cn
model_unique_abbr: SOM_MiniSom
version: 1.0
identification:
  docker_image_name: som:1.0-MiniSom2.3.0
  model_name: SOM聚类
  semantic: self organizing map clustering
  description: 基于自组织神经网络节点竞争学习策略的聚类算法
  category_application: 诊断型
  category_data:
    - 矢量点数据
  keywords:
    - 无监督神经网络
    - 自组织神经网络
parameter_info:
  parameters:
    - arg_name: input
      is_single_en_dash: false
      param_type: input_data
      name: 空间点数据
      description: 待聚类的空间数据，数据文件格式为csv，需要表头，表头中包含x坐标列和y坐标列
      data_type: csv
      data_semantic: clustering_data
    - arg_name: x_field
      is_single_en_dash: false
      param_type: param
      name: X坐标字段
      description: X坐标列在输入文件中的列名
      is_required: true
      data_type: str
      data_semantic: x_field
      param_switches:
        - switch_arg_name: input
          switch_arg_value_regex: csv$
          switch_arg_value_examples: [big_dataset.csv, small_dataset.csv]
      specification:
        default: x
    - arg_name: y_field
      is_single_en_dash: false
      param_type: param
      name: Y坐标字段
      description: Y坐标列在输入文件中的列名
      is_required: true
      data_type: str
      data_semantic: y_field
      param_switches:
        - switch_arg_name: input
          switch_arg_value_regex: csv$
          switch_arg_value_examples: [big_dataset.csv, small_dataset.csv]
      specification:
        default: y
    - arg_name: xnum
      is_single_en_dash: false
      param_type: param
      name: X方向神经元个数
      description: X方向神经元个数，整数型数值，最小值为2
      data_type: int
      data_semantic: xnum
      specification:
        range:
          - "[2,)"
        default: 3

    - arg_name: ynum
      is_single_en_dash: false
      param_type: param
      name: Y方向神经元个数
      description: Y方向神经元个数，整数型数值，最小值为2
      data_type: int
      data_semantic: xnum
      specification:
        range:
          - "[2,)"
        default: 3

    - arg_name: maxstep
      is_single_en_dash: false
      param_type: param
      name: 最大迭代次数
      description: 最大迭代次数，整数型数值，最小值为100
      is_required: true
      data_type: int
      data_semantic: maxstep
      specification:
        default: 1000
        range:
          - "[100,)"
    - arg_name: sigma
      is_single_en_dash: false
      param_type: param
      name: sigma
      description: 获胜邻域的初始半径，float类型数值，大于0
      is_required: false
      data_type: float
      data_semantic: sigma
      specification:
        default: 1.0
        range:
          - "(0,)"
    - arg_name: learnrate
      is_single_en_dash: false
      param_type: param
      name: 学习率
      description: 网络学习率，float类型数值，大于0
      is_required: false
      data_type: float
      data_semantic: learnrate
      specification:
        default: 0.5
        range:
          - "(0,)"
    - arg_name: neighborhoodfunction
      is_single_en_dash: false
      param_type: param
      name: 获胜邻域计算方法
      description: 获胜邻域的计算方式
      is_required: false
      data_type: enum
      data_semantic: neighborhoodfunction
      specification:
        default: gaussian
        enum:
          - gaussian
          - maxican_hat
          - bubble
          - triangle
    - arg_name: topology
      is_single_en_dash: false
      param_type: param
      name: 拓扑方法
      description: 拓扑方法
      is_required: false
      data_type: enum
      data_semantic: topology method
      specification:
        default: rectangular
        enum:
          - rectangular
          - hexagonal
    - arg_name: activationdistance
      is_single_en_dash: false
      param_type: param
      name: 距离度量方式
      description: 距离度量方式
      is_required: false
      data_type: enum
      data_semantic: activation distance
      specification:
        default: euclidean
        enum:
          - euclidean
          - cosine
          - manhattan
          - chebyshev
    - arg_name: randomseed
      is_single_en_dash: false
      param_type: param
      name: 随机种子
      description: 随机种子,大于0值的整数,控制初始权重的随机性，以便于复现结果，整数型数值，大于0
      is_required: true
      data_type: int
      data_semantic: randomseed
      specification:
        range:
          - "[0,)"
        default: 43
    - arg_name: output
      is_single_en_dash: false
      param_type: output_data
      name: SOM聚类结果
      description: 带有簇标签的聚类结果，保存为json文件。新增列名默认为label,若原数据中已有该列,则添加从序号1编号,如label1、label2...。聚类标签为1,2...
      data_type: json
      data_semantic: cluster_result
  groups:
    - group_id: ixy
      group_name: 输入数据XY列
      group_param_arg_names:
        - input
        - x_field
        - y_field
application:
  domain: 空间点聚类
  objective: 通过生成一个低维的映射网络对于空间点数据进行聚类
  dimension:
    - 二维
  mechanism: 将输入的空间点数据降维表示成网络中的活动点，然后对于活动点进行竞争、协作和适应这三个学习过程，最后得到的活动点代表输入空间点的聚类结果
operation:
  usage: "该算法需要四个参数,X坐标列名(x_field),Y坐标列名(y_field),X方向神经元个数(xnum),Y方向神经元个数(ynum)。"
  exec_example:
    - docker run -v $(pwd):/data som:1.0-MiniSom2.3.0 -i /data/data.csv -xnum 10 -ynum 10 -o /data/analysisresult.json
  output_display:
    - "针对聚类结果中label列,用不同颜色绘制不同标签的二维点数据"
  license:
    - MiniSom-MIT
technique:
  language:
    - Python
  os:
    - Linux
    - Windows
  dependencies:
    - name: MiniSom
      version: 2.3.0
source:
  maintainer: Nanwei Cheng
  organization: Central South University
  contact: 2247486718@qq.com
  integrated_softwares:
    - name: MiniSom
      version: 2.3.0
      license: MIT
  references:
    - "Kohonen, T. 1998. The self-organizing map. Proceedings of the IEEE, 78(9):1464–1480."
