我正试图通过PySpark( TrainValidationSplit )优化星火( ALS )模型的超参数。
它运行良好,但我想知道哪一个组合的超参数是最好的。如何获得评估后的最佳参数?
from pyspark.ml.recommendation import ALS
from pyspark.ml.tuning import TrainValidationSplit, ParamGridBuilder
from pyspark.ml.evaluation import RegressionEvaluator
df = sqlCtx.createDataFrame(
[(0, 0, 4.0), (0, 1, 2.0), (1, 1, 3.0), (1, 2, 4.0), (2, 1, 1.0), (2, 2, 5.0)],
["user", "item", "rating"],
)
df_test = sqlCtx.createDataFrame(
[(0, 0), (0, 1), (1, 1), (1, 2), (2, 1), (2, 2)],
["user", "item"],
)
als = ALS()
param_grid = ParamGridBuilder().addGrid(
als.rank,
[10, 15],
).addGrid(
als.maxIter,
[10, 15],
).build()
evaluator = RegressionEvaluator(
metricName="rmse",
labelCol="rating",
)
tvs = TrainValidationSplit(
estimator=als,
estimatorParamMaps=param_grid,
evaluator=evaluator,
)
model = tvs.fit(df)问:如何获得最佳排名和maxIter?
发布于 2017-01-28 13:32:29
可以使用bestModel属性访问TrainValidationSplitModel的最佳模型。
best_model = model.bestModelbest_model.rank10获得最大迭代次数需要更多的技巧:
(best_model
._java_obj # Get Java object
.parent() # Get parent (ALS estimator)
.getMaxIter()) # Get maxIter10https://stackoverflow.com/questions/41908418
复制相似问题