here is the scala code I use to get the best model, I never used java

    val cv = new CrossValidator().setEstimator(pipeline).setEvaluator(new
 RegressionEvaluator).setEstimatorParamMaps(paramGrid)

    val cvModel = cv.fit(data)

    val plmodel = cvModel.bestModel.asInstanceOf[PipelineModel]

    val lrModel = plmodel.stages(0).asInstanceOf[LinearRegressionModel]

On 24 November 2016 at 10:23, Zhiliang Zhu <zchl.j...@yahoo.com> wrote:

> Hi Xiaomeng,
>
> Thanks very much for your comment, which is helpful for me.
>
> However, it seems that here met more issue about XXXClassifier and
> XXXClassificationModel,
> as the codes below:
>
> .......
>         GBTClassifier gbtModel = new GBTClassifier();
>         ParamMap[] grid = new ParamGridBuilder()
>             .addGrid(gbtModel.maxIter(), new int[] {5})
>             .addGrid(gbtModel.maxDepth(), new int[] {5})
>             .build();
>
>         CrossValidator crossValidator = new CrossValidator()
>             .setEstimator(gbtModel) //rfModel
>             .setEstimatorParamMaps(grid)
>             .setEvaluator(new BinaryClassificationEvaluator())
>             .setNumFolds(6);
>
>         Pipeline pipeline = new Pipeline()
>             .setStages(new PipelineStage[] {labelIndexer, vectorSlicer,
> crossValidator});
>
>         PipelineModel plModel = pipeline.fit(data);
>         ArrayList<PipelineModel> m = new ArrayList<PipelineModel> ();
>         m.add(plModel);
>         JAVA_SPARK_CONTEXT.parallelize(m, 1).saveAsObjectFile(this.outputPath
> + POST_MODEL_PATH);
>
>         Transformer[] stages = plModel.stages();
>         Transformer cvStage = stages[2];
>         CrossValidator crossV = new 
> TR2CVConversion(cvStage).getInstanceOfCrossValidator();
> //call self defined scala class
>         Estimator<?> estimator = crossV.getEstimator();
>
>         GBTClassifier gbt = (GBTClassifier)estimator;
>
> //all the above is okay to compile, but it is wrong to compile for next
> line
> //however, in GBTClassifier seems not much detailed model description to
> get
> //but by GBTClassificationModel.toString(), we may get the specific trees
> which are just I want
>
>         GBTClassificationModel model = (GBTClassificationModel)get;  //wrong
> to compile
>
>
> Then how to get the specific trees or forest from the model?
> Thanks in advance~
>
> Zhiliang
>
>
>
>
>
>
>
>
>
>
> On Thursday, November 24, 2016 2:15 AM, Xiaomeng Wan <shawn...@gmail.com>
> wrote:
>
>
> You can use pipelinemodel.stages(0).asInstanceOf[RandomForestModel]. The
> number (0 in example) for stages depends on the order you call setStages.
>
> Shawn
>
> On 23 November 2016 at 10:21, Zhiliang Zhu <zchl.j...@yahoo.com.invalid>
> wrote:
>
>
> Dear All,
>
> I am building model by spark pipeline, and in the pipeline I used Random
> Forest Alg as its stage.
> If I just use Random Forest but not make it by way of pipeline, I could
> see the information about the forest by API as
> rfModel.toDebugString() and rfModel.toString() .
>
> However, while it comes to pipeline, how to check the alg information,
> such as the tree, or the threshold selected by lr etc ...
>
> Thanks in advance~~
>
> zhiliang
>
>
> ------------------------------ ------------------------------ ---------
> To unsubscribe e-mail: user-unsubscribe@spark.apache. org
> <user-unsubscr...@spark.apache.org>
>
>
>
>
>

Reply via email to