使用iris数据集(logisticregressionwithlbfgs(),多类分类)。我把数据拉入rdd,转换成Dataframe,整理一下。在iris plant class/label字段上创建了labelindex。创建了其他字段的特征向量。获取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进行转换。
我如何得到更好看的表格数据,尽可能接近原始数据集,并对其进行预测?我想我错过了一个技巧。
上面的输出如下所示:
(2.0,2.0)
(2.0,2.0)
(2.0,2.0)
(2.0,2.0)
(2.0,2.0)
...
这是什么意思?不知道如何读取/解释第一行的数据,是不是说,它预测的是“2.0”,而实际的标签是“2.0”?我理解得对吗?
1条答案
按热度按时间qcbq4gxm1#
是的,当您将Map应用到输入数据集并对每个元素进行预测时,您拥有的是rdd[(double,double)]形式的(标签,预测)。但是,您使用的是mlib lr实现。您可以直接使用dataframe实现。看看这个例子。fit函数优化模型并返回logisticragressionmodel。将transform方法应用于输入Dataframe,将添加一个带有预测的新列。