Pyspark - Получить все параметры моделей, созданных с помощью ParamGridBuilder.

Я использую PySpark 2.0 для соревнований Kaggle. Я хотел бы знать поведение модели (RandomForest) в зависимости от разных параметров.ParamGridBuilder() позволяет указать разные значения для одного параметра, а затем выполнить (я полагаю) декартово произведение всего набора параметров. Предполагая мойDataFrame уже определено:

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)

Хорошо, теперь я могу получить простую информацию с помощью функции ручной работы:

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

Теперь я хочу несколько вещей:

Каковы параметры лучшей модели? Этот пост частично отвечает на вопрос:Как извлечь гиперпараметры модели из spark.ml в PySpark?Каковы параметры всех моделей?Каковы результаты (иначе говоря, точность и т. Д.) Каждой модели? Я только нашелprint(model.validationMetrics) это отображает (кажется) список, содержащий точность каждой модели, но я не могу узнать, к какой модели относится.

Если я смогу получить всю эту информацию, я смогу отображать графики, гистограммы и работать так же, как и с Panda иsklearn.

Ответы на вопрос(2)

Ваш ответ на вопрос