como obter o melhor modelo treinado de um crossvalidator
Criei um pipeline incluindo um DecisionTreeClassifier (dt) como este
val pipeline = new Pipeline().setStages(Array(labelIndexer, featureIndexer, dt, labelConverter))
Então eu usei esse pipeline como estimador em um CrossValidator para obter um modelo com o melhor 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, eu poderia treinar um modelo em um teste de treinamento com este crossvalidator
val model = c_v.fit(train)
Mas a questão é: eu quero ver o melhor modelo de árvore de decisão treinado com o parâmetro.toDebugTree
doDecisionTreeClassificationModel
. Mas modelo é umCrossValidatorModel
. Sim, você pode usarmodel.bestModel
, mas ainda é do tipoModel
, você não pode aplicar.toDebugTree
para isso. E também presumo que o bestModel ainda é um pipline, incluindolabelIndexer
, featureIndexer
, dt
, labelConverter
.
Alguém sabe como posso obter o modelo decisionTree a partir do modelo ajustado pelocrossvalidator
, que eu pude visualizar o modelo realtoDebugString
? Ou existe alguma solução alternativa que eu possa exibir o modelo decisionTree?