I have worked it out, just let java call scala class function .Thank Xiaomeng a lot~~
On Friday, November 25, 2016 1:50 AM, Xiaomeng Wan <shawn...@gmail.com> wrote: 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