首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在通过pyspark.ml.tuning.TrainValidationSplit进行调优后获得最佳参数?

如何在通过pyspark.ml.tuning.TrainValidationSplit进行调优后获得最佳参数?
EN

Stack Overflow用户
提问于 2017-01-28 09:50:09
回答 1查看 4.1K关注 0票数 6

我正试图通过PySpark( TrainValidationSplit )优化星火( ALS )模型的超参数。

它运行良好,但我想知道哪一个组合的超参数是最好的。如何获得评估后的最佳参数?

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-28 13:32:29

可以使用bestModel属性访问TrainValidationSplitModel的最佳模型。

代码语言:javascript
复制
best_model = model.bestModel

可以使用rank属性直接访问ALSModel的秩

代码语言:javascript
复制
best_model.rank
代码语言:javascript
复制
10

获得最大迭代次数需要更多的技巧:

代码语言:javascript
复制
(best_model
    ._java_obj     # Get Java object
    .parent()      # Get parent (ALS estimator)
    .getMaxIter()) # Get maxIter
代码语言:javascript
复制
10
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41908418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档