Cómo obtener el mejor modelo entrenado de un validador cruzado
Construí una tubería que incluye un DecisionTreeClassifier (dt) como este
val pipeline = new Pipeline().setStages(Array(labelIndexer, featureIndexer, dt, labelConverter))
Luego usé esta tubería como el estimador en un CrossValidator para obtener un modelo con el mejor conjunto de hiperparámetros como este
val c_v = new CrossValidator().setEstimator(pipeline).setEvaluator(new MulticlassClassificationEvaluator().setLabelCol("indexedLabel").setPredictionCol("prediction")).setEstimatorParamMaps(paramGrid).setNumFolds(5)
Finalmente, podría entrenar a un modelo en una prueba de entrenamiento con este crossvalidator
val model = c_v.fit(train)
Pero la pregunta es, quiero ver el modelo de árbol de decisión mejor entrenado con el parámetro.toDebugTree
deDecisionTreeClassificationModel
. Pero el modelo es unCrossValidatorModel
. Sí, puedes usarmodel.bestModel
, pero todavía es de tipoModel
, no puedes aplicar.toDebugTree
lo. Y también supongo que el mejor modelo sigue siendo una tubería que incluyelabelIndexer
, featureIndexer
, dt
, labelConverter
.
Entonces, ¿alguien sabe cómo puedo obtener el modelo decisionTree del modelo ajustado por elcrossvalidator
, que pude ver el modelo real portoDebugString
? ¿O hay alguna solución alternativa para ver el modelo decisionTree?