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
.