如何访问ML Pipeline中底层模型的参数?

2023-12-22

我有一个使用 LinearRegression 处理的 DataFrame。如果我直接这样做,如下所示,我可以显示模型的详细信息:

val lr = new LinearRegression()
val lrModel = lr.fit(df)

lrModel: org.apache.spark.ml.regression.LinearRegressionModel = linReg_b22a7bb88404

println(s"Coefficients: ${lrModel.coefficients} Intercept: ${lrModel.intercept}")
Coefficients: [0.9705748115939526] Intercept: 0.31041486689532866

但是,如果我在管道内使用它(如下面的简化示例所示),

val pipeline = new Pipeline().setStages(Array(lr))
val lrModel = pipeline.fit(df)

然后我收到以下错误。

scala> lrModel
res9: org.apache.spark.ml.PipelineModel = pipeline_99ca9cba48f8

scala> println(s"Coefficients: ${lrModel.coefficients} Intercept: ${lrModel.intercept}")
<console>:68: error: value coefficients is not a member of org.apache.spark.ml.PipelineModel
       println(s"Coefficients: ${lrModel.coefficients} Intercept: ${lrModel.intercept}")
                                         ^
<console>:68: error: value intercept is not a member of org.apache.spark.ml.PipelineModel
       println(s"Coefficients: ${lrModel.coefficients} Intercept: ${lrModel.intercept}")

我理解它的含义(很明显,由于管道的原因,我得到了一个不同的类),但不知道如何获得真正的底层模型。


LinearRegressionModel应该在里面stages与其对应的索引完全相同LinearRegression.

import org.apache.spark.ml.regressio‌​n.LinearRegressionMo‌​del
lrModel.stages(0).asInstanceOf[LinearRegressionMo‌​del]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何访问ML Pipeline中底层模型的参数? 的相关文章

随机推荐