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?