language: cn
model_unique_abbr: cure_clustering
version: 1.0
identification:
  docker_image_name: cure_clustering:1.0
  model_name: CURE聚类
  semantic: cure clustering
  description: CURE（Clustering Using Representatives）是一种针对大型地理空间对象集的高效层次聚类算法，基于代表点和收缩因子的聚类算法，将空间点对象无监督地划分为若干簇。
  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: cluster data

    - arg_name: x_field
      is_single_en_dash: false
      param_type: param
      name: X坐标字段
      description: X坐标列在输入文件中的列名
      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坐标列在输入文件中的列名
      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: num_representatives
      is_single_en_dash: false
      param_type: param
      name: 簇代表点的数量
      description: 输入每个簇的代表点数量，算法会选择若干个最远离簇质心的点作为代表点，输入值为大于0的整数
      is_required: true
      data_type: int
      data_semantic: number of representatives
      specification:
        range:
          - "(0,)"
        default: 5

    - arg_name: alpha
      is_single_en_dash: false
      param_type: param
      name: 代表点的收缩因子
      description: 代表点向簇中心收缩的因子，float类型数值，范围(0,1)；较小的alpha值会让簇更紧凑，代表点离质心更近；而较大的alpha值会保持簇的原始边界，代表点离质心较远。
      is_required: true
      data_type: float
      data_semantic: shrinking factor
      specification:
        range:
          - "(0,1)"
        default: 0.2

    - arg_name: distance_threshold
      is_single_en_dash: false
      param_type: param
      name: 自适应聚类的距离阈值
      description: 用于自适应聚类的过程，float类型数值，输入值需大于0。它定义了簇之间的距离阈值，即两个簇是否应该合并的标准。
      is_required: true
      data_type: float
      data_semantic: distance threshold
      specification:
        range:
          - "(0,)"
        default: 2.0

    - arg_name: output
      is_single_en_dash: false
      param_type: output_data
      name: 聚类结果
      description: 保存格式为csv，在输入文件中添加一列cluster，代表聚类标签，如1，2，3....，每个数据代表一类。
      data_type: csv
      data_semantic: cluster_result
application:
  domain: 空间点聚类
  objective: 在空间点数据中发现簇
  dimension:
    - 二维
  mechanism: 通过随机抽样，然后在抽样数据上进行层次聚类，找到每个簇的代表点，然后将代表点向簇中心收缩，最后根据最近的代表点合并簇
operation:
  usage: 该算法需要五个参数，X坐标列，Y坐标列，簇代表点的数量，代表点的收缩因子，自适应聚类的距离阈值。
  exec_example:
    - docker run -v $(pwd):/data cure_clustering:1.0 --input /data/data.csv --output /data/clustering_result.csv
    - docker run -v $(pwd):/data cure_clustering:1.0 --input /data/data.csv --num_representatives 5 --alpha 0.2 --distance_threshold 2.0 --output /data/clustering_result.csv
  output_display:
    - 针对聚类结果中列cluster，用不同颜色绘制不同标签的二维点数据。
  license:
    - BSD
technique:
  language:
    - Python
  os:
    - Linux
    - Windows
  parallel:
    - multiprocessing
  hardware:
    - CPU
  dependencies:
    - name: numpy
      version: 1.21.2
    - name: pandas
      version: 1.3.3
    - name: matplotlib
      version: 3.4.3
    - name: scipy
      version: 1.7.1
source:
  maintainer: Yixun Liu
  organization: Central South University
  contact: 1907269689@qq.com
  integrated_softwares:
    - name: numpy
      version: 1.21.2
      license: BSD
    - name: pandas
      version: 1.3.3
      license: BSD
    - name: matplotlib
      version: 3.4.3
      license: BSD
    - name: scipy
      version: 1.7.1
      license: BSD
  references:
    - "Guha, S., Rastogi, R., & Shim, K. (1998, August). CURE: an efficient clustering algorithm for large databases. In ACM SIGMOD Record (Vol. 27, No. 2, pp. 73-84). ACM."
