ich eine Pipeline mit einer DecisionTreeClassifier (dt) gebaut wie diesewie das trainierte beste Modell von einem crossvalidator erhalten
val pipeline = new Pipeline().setStages(Array(labelIndexer, featureIndexer, dt, labelConverter))
Dann habe ich diese Pipeline als Schätzer in einem CrossValidator, um ein Modell mit bekommen der beste Satz von Hyper wie diese
val c_v = new CrossValidator().setEstimator(pipeline).setEvaluator(new MulticlassClassificationEvaluator().setLabelCol("indexedLabel").setPredictionCol("prediction")).setEstimatorParamMaps(paramGrid).setNumFolds(5)
Schließlich könnte ich ein Modell auf einem Trainingstest mit diesem crossvalidator
val model = c_v.fit(train)
trainieren
Aber die Frage ist, ich möchte das am besten ausgebildete Entscheidungsbaummodell mit dem Parameter .toDebugTree
von DecisionTreeClassificationModel
anzeigen. Aber Modell ist ein CrossValidatorModel
. Ja, Sie können model.bestModel
verwenden, aber es ist immer noch vom Typ Model
, Sie können .toDebugTree
nicht darauf anwenden. Und ich nehme auch an, dass das beste Modell immer noch eine Pipline ist, einschließlich labelIndexer
, featureIndexer
, dt
, labelConverter
.
Also weiß jemand, wie ich das DecisionTree Modell von dem Modell erhalten kann, das durch die crossvalidator
gepasst wird, die ich das tatsächliche Modell durch toDebugString
sehen konnte? Oder gibt es eine Problemumgehung, die ich das DecisionTree-Modell anzeigen kann?
Danke Mann! Genau danach suche ich. –
Gern geschehen, und wenn dies eine Lösung ist, die Sie gesucht haben, akzeptieren Sie bitte die Antwort. – zero323
Danke, versuchte es hier auf einem LinearRegressionModel https://databricks-prod-cloudfront.cloud.databricks.com/public/4027ec902e239c93eaaa8714f173bcfc/1221303294178191/2620145786109408/6190062569763605/latest.html – oluies