当前位置: 首页 > 知识库问答 >
问题:

如何使用Dataframe API在Spark MLlib中计算二进制分类指标

田翔
2023-03-14

我正在将 Spark MLlib 与数据帧 API 结合使用,给出了以下示例代码:

val dtc = new DecisionTreeClassifier()
val testResults = dtc.fit(training).transform(test)

是否可以使用数据帧 API 计算测试结果上的模型质量指标?

如果没有,我如何正确转换我的测试结果(包含“标签”,“特征”,“原始预测”,“概率”,“预测”),以便我可以使用二进制分类指标(RDD API)?

注意:我也对“字节阈值”指标感兴趣

共有1个答案

通宾白
2023-03-14

如果你看看BinaryClassificationMetrics的构造函数,它需要一个RDD[(Double,Double)]、分数和标签。您可以将数据帧转换为正确的格式,如下所示:

val scoreAndLabels = testResults.select("label", "probability")
    .rdd
    .map(row => 
            (row.getAs[Vector]("probability")(1), row.getAs[Double]("label"))
    )

编辑:

概率存储在<code>向量

 类似资料:
  • 我正在编写dijkstra算法的代码,对于我们应该找到与当前使用的节点之间距离最小的节点的部分,我使用了一个数组,并完全遍历它来找出节点。 这部分可以用二进制堆代替,我们可以在O(1)时间内计算出节点,但是我们也在进一步的迭代中更新节点的距离,我将如何合并那个堆? 对于数组,我所要做的就是转到(ith-1)索引并更新该节点的值,但在二进制堆中不能做同样的事情,我必须进行完整的搜索以确定节点的位置,

  • 问题内容: 我正在尝试将此MNIST示例调整为二进制分类。 但是,改变我的时候,从到,损失函数总是返回0(和准确度1)。 我检查了两者的尺寸(馈入),并且它们都是1xN矩阵,因此问题似乎早于此。也许与矩阵乘法有关? 我实际上在一个真实的项目中也遇到了同样的问题,所以任何帮助都将不胜感激……谢谢! 问题答案: 原始的MNIST示例使用单热编码来表示数据中的标签:这意味着,如果存在类(如MNIST中的

  • 我试过用 如何在php中计算crc16 CRC16函数的C到PHP转换 我在寻找校验和

  • 1. 为什么计算机用二进制计数 人类的计数方式通常是“逢十进一”,称为十进制(Decimal),大概因为人有十个手指,所以十进制是最自然的计数方式,很多民族的语言文字中都有十个数字,而阿拉伯数字0~9是目前最广泛采用的。 计算机是用数字电路搭成的,数字电路中只有1和0两种状态,或者可以说计算机只有两个手指,所以对计算机来说二进制(Binary)是最自然的计数方式。根据“逢二进一”的原则,十进制的1

  • 我有一个关于在JSP中使用三进制运算符的查询。下面提到的代码使用了if else语句,该语句运行良好。 请帮助我如何使用这个三值运算符来满足这个要求。 提前谢了。