将 SQL 和权重与 spark ML LogisticRegressionModel 一起使用
Using SQL and weights with the spark ML LogisticRegressionModel
我正在试验 spark.ml 库和管道功能。将 SQL 与拆分一起使用似乎存在限制(例如,对于训练和测试):
- 很高兴 spark.ml 脱离模式 rdd,但是没有简单的方法在测试和训练集中随机拆分模式 rdd。我可以使用 randomSplit(0.6,0.4) 但这会返回一个丢失模式的 RDD 数组。我可以在其上强制使用 case class 并将其转换回模式 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)具有属性权重(向量类型)。
案例一
如果您有 LogisticRegressionModel(spark.ml)
LogisticRegression lr = new LogisticRegression();
LogisticRegressionModel lr1 = lr.fit(df_train);
System.out.println("The weights are " + lr1.weights())
案例二
如果您有管道模型,请先使用 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());
如果不正确或有更好的方法,请告诉我。
我正在试验 spark.ml 库和管道功能。将 SQL 与拆分一起使用似乎存在限制(例如,对于训练和测试):
- 很高兴 spark.ml 脱离模式 rdd,但是没有简单的方法在测试和训练集中随机拆分模式 rdd。我可以使用 randomSplit(0.6,0.4) 但这会返回一个丢失模式的 RDD 数组。我可以在其上强制使用 case class 并将其转换回模式 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)具有属性权重(向量类型)。
案例一
如果您有 LogisticRegressionModel(spark.ml)
LogisticRegression lr = new LogisticRegression();
LogisticRegressionModel lr1 = lr.fit(df_train);
System.out.println("The weights are " + lr1.weights())
案例二
如果您有管道模型,请先使用 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());
如果不正确或有更好的方法,请告诉我。