Kaggle コンペティションに PySpark 2.0 を使用しています。RandomForest
さまざまなパラメータに応じたモデル ( ) の動作を知りたいです。ParamGridBuilder()
単一のパラメーターに異なる値を指定してから、パラメーターのセット全体のデカルト積を実行することができます (私は推測します)。DataFrame
myが既に定義されていると仮定します。
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)))
今、私はいくつかのことが欲しいです:
- 最良のモデルのパラメータは? この投稿は、次の質問に対する部分的な回答です: How to extract model hyper-parameters from spark.ml in PySpark?
- すべてのモデルのパラメータは?
- 各モデルの結果 (再現率、精度など) は? 各モデルの精度を含むリストが表示される(ように見える)ことだけがわかりまし
print(model.validationMetrics)
たが、どのモデルを参照すればよいかわかりません。
これらの情報をすべて取得できれば、グラフや棒グラフを表示したり、Panda やsklearn
.