功能介绍

聚类评估是对聚类算法的预测结果进行效果评估,支持下列评估指标。

Compactness(CP), CP越低意味着类内聚类距离越近

聚类模型评估(batch) - 图1
聚类模型评估(batch) - 图2

Seperation(SP), SP越高意味类间聚类距离越远

聚类模型评估(batch) - 图3

Davies-Bouldin Index(DB), DB越小意味着类内距离越小 同时类间距离越大

聚类模型评估(batch) - 图4

Calinski-Harabasz Index(VRC), VRC越大意味着聚类质量越好

聚类模型评估(batch) - 图5
聚类模型评估(batch) - 图6
聚类模型评估(batch) - 图7

参数说明

名称 中文名称 描述 类型 是否必须? 默认值
labelCol 标签列名 输入表中的标签列名 String null
vectorCol 向量列名 输入表中的向量列名 String null
predictionCol 预测结果列名 预测结果列名 String
distanceType 距离度量方式 聚类使用的距离类型,支持EUCLIDEAN(欧式距离)和 COSINE(余弦距离) String “EUCLIDEAN”

脚本示例

脚本代码

  1. import numpy as np
  2. import pandas as pd
  3. data = np.array([
  4. [0, "0 0 0"],
  5. [0, "0.1,0.1,0.1"],
  6. [0, "0.2,0.2,0.2"],
  7. [1, "9 9 9"],
  8. [1, "9.1 9.1 9.1"],
  9. [1, "9.2 9.2 9.2"]
  10. ])
  11. df = pd.DataFrame({"id": data[:, 0], "vec": data[:, 1]})
  12. inOp = BatchOperator.fromDataframe(df, schemaStr='id int, vec string')
  13. metrics = EvalClusterBatchOp().setVectorCol("vec").setPredictionCol("id").linkFrom(inOp).collectMetrics()
  14. print("Total Samples Number:", metrics.getCount())
  15. print("Cluster Number:", metrics.getK())
  16. print("Cluster Array:", metrics.getClusterArray())
  17. print("Cluster Count Array:", metrics.getCountArray())
  18. print("CP:", metrics.getCompactness())
  19. print("DB:", metrics.getDaviesBouldin())
  20. print("SP:", metrics.getSeperation())
  21. print("SSB:", metrics.getSsb())
  22. print("SSW:", metrics.getSsw())
  23. print("CH:", metrics.getCalinskiHarabaz())

脚本运行结果

  1. Total Samples Number: 6
  2. Cluster Number: 2
  3. Cluster Array: ['0', '1']
  4. Cluster Count Array: [3.0, 3.0]
  5. CP: 0.11547005383792497
  6. DB: 0.014814814814814791
  7. SP: 15.588457268119896
  8. SSB: 364.5
  9. SSW: 0.1199999999999996
  10. CH: 12150.000000000042