wie man das trainierte beste Modell von einem Crossvalidator erhält

Ich habe eine Pipeline mit einem DecisionTreeClassifier (dt) wie diesem erstellt

val pipeline = new Pipeline().setStages(Array(labelIndexer, featureIndexer, dt, labelConverter))

Dann habe ich diese Pipeline als Schätzer in einem CrossValidator verwendet, um ein Modell mit dem besten Satz von Hyperparametern wie diesem zu erhalten

val c_v = new CrossValidator().setEstimator(pipeline).setEvaluator(new MulticlassClassificationEvaluator().setLabelCol("indexedLabel").setPredictionCol("prediction")).setEstimatorParamMaps(paramGrid).setNumFolds(5)

Endlich könnte ich mit diesem crossvalidator ein Modell für einen Trainingstest trainieren

val model = c_v.fit(train)

Aber die Frage ist, ich möchte das am besten trainierte Entscheidungsbaummodell mit dem Parameter @ anzeige.toDebugTree vonDecisionTreeClassificationModel. Aber das Model ist einCrossValidatorModel. Ja, Sie können @ verwendmodel.bestModel, aber es ist immer noch vom TypModel, du kannst dich nicht bewerben.toDebugTree dazu. Und außerdem gehe ich davon aus, dass das bestModel immer noch eine Pipline ist, einschließlichlabelIndexer, featureIndexer, dt, labelConverter.

So weiß jemand, wie ich das DecisionTree-Modell aus dem vom @ angepassten Modell erhalten kacrossvalidator, das ich mir das aktuelle Modell von @ ansehen konntoDebugString? Oder gibt es eine Problemumgehung, mit der ich das decisionTree-Modell anzeigen kann?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage