使用SQL和带有spark ML LogisticRegressionModel的权重



我正在试验spark.ml库和管道功能。将SQL与拆分一起使用似乎有一个限制(例如,用于训练和测试):

  • spark.ml在模式rdd之外工作是很好的,但在测试和训练集中并没有简单的方法来随机分割模式rdd。我可以使用randomSplit(0.6,0.4),但这会返回一个丢失模式的RDD数组。我可以在上面强制使用case类,并将其隐藏回模式RDD,但我有很多功能。我使用了过滤器,并基于我的一个iid特性使用了一些基本的分区条件)。还有什么可以做的建议吗

关于生成的模型:

  • 如何访问模型权重?lr优化器和lr模型内部有权重,但尚不清楚如何使用它们

好的,对于问题的第二部分,

How do I access the model weights? The lr optimizer and lr model internally has weights but it is unclear how to use them

在浏览了库的来源(使用不存在的Scala知识)后,

LogisticRegressionModel(spark.ml)具有属性权重(vector类型)。

案例1

如果你有LogisticRegression模型(的spark.ml)

LogisticRegression lr = new LogisticRegression();
LogisticRegressionModel lr1 = lr.fit(df_train);
System.out.println("The weights are  " + lr1.weights())

案例2

如果您有管道模型,首先使用getModel 获取LogisticRegressionModel(Transformer)

    LogisticRegression lr = new LogisticRegression().setMaxIter(10).setRegParam(0.01);
    Pipeline pipeline = new Pipeline().setStages(new PipelineStage[] { lr });
    PipelineModel model = pipeline.fit(train_df);
    LogisticRegressionModel lrModel =model.getModel(lr);
    System.out.println("The model is  {}", lrm.weights());

如果它是不正确的,或者有更好的方法,请告诉我。

相关内容

  • 没有找到相关文章

最新更新