【问题标题】:Predict with a List<Double>用 List<Double> 预测
【发布时间】:2017-11-04 22:56:24
【问题描述】:

我有一个来自 libsvm 文件的训练有素的 RandomForestModel 对象,现在想使用该模型调用 predict 方法,并使用 List&lt;Double&gt; 作为特征。如何将List&lt;Double&gt; 转换为 Java 中的必要输入并查看预测的目标类?

据我所知,predict(...) 接受JavaRDD&lt;Vector&gt;,但我不确定如何将List&lt;Double&gt; 转换为那个。

【问题讨论】:

标签: java spark-dataframe apache-spark-mllib


【解决方案1】:

通过浏览docs,看起来RandomForestModel 也可以在Vector 上调用predict。您可以将List&lt;Double&gt; 转换为DenseVector (docs),方法是将列表转换为double 数组,如this 问题,然后执行new DenseVector(double_array)

【讨论】:

  • 在看到这个之前,我最终做了 Vector dv = Vectors.dense(Doubles.toArray(myListOfDoubles)),其中 Doubles.toArray 来自 Guava
【解决方案2】:

根据数据的稀疏性,您可以使用 SparseVectorDenseVector 编写从 List 到 Vector 的 map 转换

int length = yourList.size();
double[] inputArray = new double[length];
yourList.toArray(inputArray);
Vector inputVector = new DenseVector(inputArray);

【讨论】:

    猜你喜欢
    • 2015-09-21
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多