用 List<Double> 预测
Posted
技术标签:
【中文标题】用 List<Double> 预测【英文标题】:Predict with a List<Double> 【发布时间】:2017-11-04 22:56:24 【问题描述】:我有一个来自 libsvm 文件的训练有素的 RandomForestModel
对象,现在想使用该模型调用 predict 方法,并使用 List<Double>
作为特征。如何将List<Double>
转换为 Java 中的必要输入并查看预测的目标类?
据我所知,predict(...) 接受JavaRDD<Vector>
,但我不确定如何将List<Double>
转换为那个。
【问题讨论】:
我假设我应该使用的是spark.apache.org/docs/2.2.0/api/java/org/apache/spark/mllib/… 我建议你阅读JavaRDD类的文档。 【参考方案1】:通过浏览docs,看起来RandomForestModel
也可以在Vector
上调用predict
。您可以将List<Double>
转换为DenseVector
(docs),方法是将列表转换为double
数组,如this 问题,然后执行new DenseVector(double_array)
。
【讨论】:
在看到这个之前,我最终做了 Vector dv = Vectors.dense(Doubles.toArray(myListOfDoubles)),其中 Doubles.toArray 来自 Guava【参考方案2】:根据数据的稀疏性,您可以使用 SparseVector 或 DenseVector 编写从 List 到 Vector 的 map
转换
int length = yourList.size();
double[] inputArray = new double[length];
yourList.toArray(inputArray);
Vector inputVector = new DenseVector(inputArray);
【讨论】:
以上是关于用 List<Double> 预测的主要内容,如果未能解决你的问题,请参考以下文章
如何使用在 Swift 中返回 MultiArray(Double) 的模型进行预测