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

xgboost4j-spark evaluate需要RDD[(Double,Double)]

冀景明
2023-03-14

我尝试将xgboost4j与spark 2.0.1和Dataset API结合使用。到目前为止,我通过使用<代码>模型获得了以下格式的预测。转换(测试数据

predictions.printSchema
root
 |-- label: double (nullable = true)
 |-- features: vector (nullable = true)
 |-- probabilities: vector (nullable = true)
 |-- prediction: double (nullable = true)


+-----+--------------------+--------------------+----------+
|label|            features|       probabilities|prediction|
+-----+--------------------+--------------------+----------+
|  0.0|[0.0,1.0,0.0,476....|[0.96766251325607...|       0.0|
|  0.0|[0.0,1.0,0.0,642....|[0.99599152803421...|       0.0|

但是现在我想生成评估指标。如何将预测映射到正确的格式?DMLC在Spark-1.6.1上的XGBost-4j提出了一个类似的问题,但我无法让它为我工作。

val metrics = new BinaryClassificationMetrics(predictions.select("prediction", "label").rdd)
would require RDD[(Double, Double)] 

而不是预测。选择(“预测”,“标签”),如下所示

root
 |-- label: double (nullable = true)
 |-- prediction: double (nullable = true)

尝试将其映射到所需的元组,例如:

predictions.select("prediction", "label").map{case Row(_) => (_,_)}

也无法正常工作。

在sparks文档中阅读更多内容http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.ml.evaluation.BinaryClassificationEvaluator它支持ml而不是ml库,例如数据集。到目前为止,我无法成功地将xgboost4j集成到管道中。

共有1个答案

严兴言
2023-03-14

这里有一个很好的例子https://github.com/dmlc/xgboost/blob/master/jvm-packages/xgboost4j-example/src/main/scala/ml/dmlc/xgboost4j/scala/example/spark/SparkModelTuningTool.scala如何在spark管道中使用xgboost4j。事实上,他们有一个XGBoostEstimator,它在管道中发挥了很好的作用。

 类似资料:
  • 我是java初学者,遇到过这个错误。 但是错误指向了+号,这是怎么了?上面写着发现:双倍。但我希望我的输出是双倍。但它说作为必需的int。

  • 问题内容: 我的朋友正在尝试将某种计算作为上课的一项任务,但他遇到了一些麻烦…希望您能为他提供帮助。 问题在于他从用户那里得到了一个int的输入(这必须是任务的一部分)。他正在尝试在下面的代码中将其转换为double,但这是行不通的。无论如何结果都是int。 如果您需要更多说明,我会请他提供。提前致谢! 问题答案: 您必须将一个(或两个)参数传递给除法运算符: 由于您两次执行相同的计算,因此建议您

  • 我在尝试从txt文件中读取字符串和Double时遇到了一些麻烦。这是我的txt文件: 下面是我用来阅读它们的代码: 每当我运行此代码时,线程“main”java.util.InputMisMatchException中会出现

  • 问题内容: 我创建游戏的目的很有趣,但是我仍然想认真对待它,它是一个托管各种测试的网站。通过这些测试,我希望收集统计数据。 其中一些数据将包括测试定时完成的百分比。我可以轻松计算出测试的百分比,但是当我存储有关测试完成的各种不同值时,我希望返回真实数据。 大多数值都是PHP浮点数,所以我的问题是,如果我想要真实的统计数据,应该将它们以FLOAT,DOUBLE或DECIMAL的形式存储在MYSQL中

  • 问题内容: 码: 忽略字符串中的其他内容(最小,最大和范围),但对于此行, 我收到一个错误: 必需:double [] 找到:无参数 为什么会出现此错误,我应该更改什么? 问题答案: 您以这种方式调用方法calculateAverage :,不带任何参数。但是方法是这样声明的: 因此,它需要一个type类型的参数,但是您什么也不传递。

  • 描述 (Description) C库函数double fmod(double x, double y)返回x的余数除以y 。 声明 (Declaration) 以下是fmod()函数的声明。 double fmod(double x, double y) 参数 (Parameters) x - 这是具有除法分子iex的浮点值 y - 这是具有除法分母iey的浮点值 返回值 (Return Va