我希望使用Spark进行模型调优,采用网格搜索和交叉验证。在Spark中,必须将基础模型放在管道中,管道的官方演示使用
LogisticRegression
作为基础模型,可以作为一个新对象。然而,客户端代码无法创建RandomForest
模型,因此似乎无法在管道API中使用RandomForest
。我不想重新发明轮子,所以有人能给出一些建议吗?
谢谢
(1.0 -> prediction=0.0, prob=[0.90,0.08]
(0.0 -> prediction=1.0, prob=[0.01,0.88]
。看起来这里的prediction只是最高概率值的索引。这意味着我必须查看我的类别才能确定实际的类别。问题在于,如果没有“丑陋的hack”,就无法知道这些类别。这是它应该工作的方式,还是我错过了什么? - evgenii(4.0 -> prediction=7.0
,9.0 -> prediction=3.0
,2.0 -> prediction=4.0
,8.0 -> prediction=8.0
。根据文档,predicted是“预测标签”,看起来并不像那样。但是!只要有像我从StringIndexer得到的类映射({"ml_attr":{"vals":["1.0","7.0","3.0","9.0","2.0","6.0","0.0","4.0","8.0","5.0"],"type":"nominal","name":"indexedLabel"}}
),并将“prediction”作为索引应用于该映射,我就能得到正确的预测! - evgeniiStringIndexer
的输出而不是某个原始字符串,这是正确/预期的行为。在1.6.0版本中,有一个IndexToString
转换器可以用于反向映射。 - zero323