与Spark的手册类似,我使用以下脚本来获取SVM分类器的预测结果:
int numIterations = 100;
final SVMModel model = SVMWithSGD.train(train_parsed_data.rdd(), numIterations);
// Clear the default threshold.
model.clearThreshold();
JavaRDD<Tuple2<Object, Object>> scoreAndLabels =
test_parsed_data.map(
new Function<LabeledPoint, Tuple2<Object, Object>>() {
public Tuple2<Object, Object> call(LabeledPoint p) {
Double score = model.predict(p.features());
return new Tuple2<Object, Object>(score, p.label());
}
}
);
BinaryClassificationMetrics metrics = new BinaryClassificationMetrics(JavaRDD.toRDD(scoreAndLabels));
double auPR = metrics.areaUnderPR();
double auROC = metrics.areaUnderROC();
上述脚本的结果是 scoreAndLabels 变量,它是一个(得分,标签)元组,其中得分是分类器的结果,而标签是Spark按顺序使用的实例的真实标签轻松评估绩效指标(精确度,召回率等)。但是,似乎没有直接的方法来查找分类器在我的测试数据中为每个样本分配的标签,并且似乎在Spark核心内部有一个内置模块,它使用分数为每个分配一个标签测试样本。因此,似乎我们可以从Spark获得的唯一内容是一些性能指标,如果我们使用任何二元分类器,我们就不能简单地找到预测的标签。
是否有办法以某种方式在Spark中找到我们的测试数据集的预测标签?