Pyspark - Obtenha todos os parâmetros de modelos criados com ParamGridBuilder

Estou usando o PySpark 2.0 para uma competição do Kaggle. Eu gostaria de saber o comportamento de um modelo (RandomForest) dependendo de diferentes parâmetros.ParamGridBuilder() permite especificar valores diferentes para um único parâmetro e executar (eu acho) um produto cartesiano de todo o conjunto de parâmetros. Supondo que meuDataFrame já está definido:

rdc = RandomForestClassifier()
pipeline = Pipeline(stages=STAGES + [rdc])
paramGrid = ParamGridBuilder().addGrid(rdc.maxDepth, [3, 10, 20])
                              .addGrid(rdc.minInfoGain, [0.01, 0.001])
                              .addGrid(rdc.numTrees, [5, 10, 20, 30])
                              .build()
evaluator = MulticlassClassificationEvaluator()
valid = TrainValidationSplit(estimator=pipeline,
                             estimatorParamMaps=paramGrid,
                             evaluator=evaluator,
                             trainRatio=0.50)
model = valid.fit(df)
result = model.bestModel.transform(df)

OK, então agora eu sou capaz de recuperar informações simples com uma função artesanal:

def evaluate(result):
    predictionAndLabels = result.select("prediction", "label")
    metrics = ["f1","weightedPrecision","weightedRecall","accuracy"]
    for m in metrics:
        evaluator = MulticlassClassificationEvaluator(metricName=m)
        print(str(m) + ": " + str(evaluator.evaluate(predictionAndLabels)))

Agora eu quero várias coisas:

Quais são os parâmetros do melhor modelo? Este post responde parcialmente à pergunta:Como extrair hiperparâmetros do modelo do spark.ml no PySpark?Quais são os parâmetros de todos os modelos?Quais são os resultados (também conhecidos como recall, precisão, etc ...) de cada modelo? Eu só encontreiprint(model.validationMetrics) que exibe (ao que parece) uma lista contendo a precisão de cada modelo, mas não consigo saber a que modelo se refere.

Se conseguir recuperar todas essas informações, devo poder exibir gráficos, tabelas de barras e trabalhar como faço com o Panda esklearn.

questionAnswers(2)

yourAnswerToTheQuestion