尝试解决Spark中的聚类算法测量模型评估统计(精度和召回)的问题。 Original inspiration from cross validated用于基于成对重叠的群集评估深层次的响应。
创建此样本测试数据,我能够得到预测的总预测值。
你将如何计算真正的积极因素?特别是,火花数据帧的转换得到了结果。非常感谢任何灵感。
+-----+----------+
|label| cluster |
+-----+----------+
| x| 1|
| x| 1|
| x| 1|
| x| 1|
| x| 1|
| x| 2|
| x| 3|
| x| 3|
| o| 1|
| o| 2|
| o| 2|
| o| 2|
| o| 2|
| d| 2|
| d| 3|
| d| 3|
| d| 3|
+-----+----------+
// the nCk function to be used as a UDF
def choose(n: Int, k: Int): Int ={
if (k==0) 1 else (n * choose(n-1, k-1)) / k
}
val udf_choose = udf(choose _)
// the combined sum of true positive and false positive
val tp_fp = (df.groupBy("cluster")
.count()
.filter($"count" > 1)
.withColumn("combinations", udf_choose($"count", lit(2)))
.agg(sum("combinations"))
.first().getLong(0))
// How to calculate True Positive?
输出
tp_fp: Long = 40
答案 0 :(得分:1)
用于分类的度量标准对于聚类算法毫无意义。在应用标准聚类技术时,没有“真实”的答案,结果会受到以下因素的严重影响:
同时,聚类算法不在其成本函数中使用标签。
最后分配的标签没有任何特殊含义。您可以在不影响总体成本的情况下置换标签。
如果聚类基于欧几里德距离,则质量测量的合理选择是聚类间,聚类内方差。