相关疑难解决方法(0)

PySpark:计算按 AUC 分组

  • 火花版本:1.6.0

我尝试计算按字段分组的 AUC(ROC 下的面积)id。给出以下数据:

# Within each key-value pair
# key is "id"
# value is a list of (score, label)
data = sc.parallelize(
         [('id1', [(0.5, 1.0), (0.6, 0.0), (0.7, 1.0), (0.8, 0.0)),
          ('id2', [(0.5, 1.0), (0.6, 0.0), (0.7, 1.0), (0.8, 0.0))
         ]
Run Code Online (Sandbox Code Playgroud)

BinaryClassificationMetrics可以计算给定列表的 AUC (score, label)

我想通过键计算 AUC(即id1, id2)计算 AUC。但是如何class通过键将 a“映射”到 RDD 呢?

更新

我尝试将其包装BinaryClassificationMetrics在一个函数中:

def auc(scoreAndLabels):
    return BinaryClassificationMetrics(scoreAndLabels).areaUnderROC
Run Code Online (Sandbox Code Playgroud)

然后将包装函数映射到每个值:

data.groupByKey()\
    .mapValues(auc)
Run Code Online (Sandbox Code Playgroud)

但列表实际上(score, label)是在ResultIterablemapValues() …

python apache-spark pyspark apache-spark-mllib

4
推荐指数
1
解决办法
6047
查看次数