繁体   English   中英

多类分类,使用 Spark 在 Scala 中更好地显示原始预测

[英]Multiclass classification, show raw predictions better in Scala with Spark

使用 Iris 数据集(LogisticRegressionWithLBFGS(),多类分类)。 我将数据提取到 rdd 中,转换为 Dataframe,对其进行了一些整理。 在鸢尾植物类/标签字段上创建了一个标签索引。 创建了其他字段的特征向量。 获取 dataframe 的这两个字段并转换为 labelpoint rdd 实例,我可以将数据输入 LogisticRegressionWithLBFGS()。

这是一些预测器代码:

val model = new LogisticRegressionWithLBFGS()
  .setNumClasses(10)
  .setIntercept(true)
  .setValidateData(true)
  .run(training)

分数和标签:

val scoreAndLabels_ofTrain = training.map {
  point =>
    val score = model.predict(point.features)
    (score, point.label)
}

我想看看预测

scoreAndLabels_ofTrain.take(200).foreach(println)

唯一的问题是,我几乎从书中得到了这个例子。 我很希望看到一个数据集,它显示了特征列、预测的数字是什么、它给出的概率分数等我想如果我想看的话,我需要对 labelindex 进行转换它们代表的字符串数据。

如何获得更好看的表格数据,尽可能接近原始数据集,并针对它们进行预测? 我想我在这里的某个地方错过了一个技巧。

上面的 output 看起来像:

(2.0,2.0)
(2.0,2.0)
(2.0,2.0)
(2.0,2.0)
(2.0,2.0)
...

这甚至意味着什么? 不知道如何读取/解释数据 对于第一行,是不是说它预测“2.0”,而实际的 label 是“2.0”? 我理解对了吗?

是的,当您将 map 应用于输入数据集并对每个元素进行预测时,您所拥有的是RDD[(Double, Double)]形式的 (Label,Prediction)。 但是,您使用的是 mlib LR 实现。 您可以直接使用 Dataframe 实现。 看看这个例子 拟合 function 优化 model 并返回LogisticRagressionModel 将转换方法应用于您的输入 Dataframe 并且将添加一个带有预测的新列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM