Pyspark: obtenga todos los parámetros de los modelos creados con ParamGridBuilder

Estoy usando PySpark 2.0 para una competencia de Kaggle. Me gustaría saber el comportamiento de un modelo (RandomForest) dependiendo de diferentes parámetros.ParamGridBuilder() permite especificar diferentes valores para un solo parámetro, y luego realizar (supongo) un producto cartesiano de todo el conjunto de parámetros. Asumiendo miDataFrame ya 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)

Bien, ahora puedo recuperar información simple con una función hecha a mano:

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)))

Ahora quiero varias cosas:

¿Cuáles son los parámetros del mejor modelo? Esta publicación responde parcialmente a la pregunta:¿Cómo extraer los hiperparámetros del modelo de spark.ml en PySpark?¿Cuáles son los parámetros de todos los modelos?¿Cuáles son los resultados (también conocidos como recuperación, precisión, etc.) de cada modelo? Solo encontréprint(model.validationMetrics) que muestra (parece) una lista que contiene la precisión de cada modelo, pero no puedo saber a qué modelo se refiere.

Si puedo recuperar toda esa información, debería poder mostrar gráficos, gráficos de barras y trabajar como lo hago con Panda ysklearn.

Respuestas a la pregunta(2)

Su respuesta a la pregunta