2017-01-28 6 views
0

私は、スパーク(PySpark)ALSモデルのハイパーパラメータをTrainValidationSplitで調整しようとしています。pyspark.ml.tuning.TrainValidationSplitでチューニングした後に最良のパラメータを得るには?

正常に動作しますが、ハイパーパラメータのどの組み合わせが最適かを知りたいと思います。評価後に最良のパラメータを得るには?

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を取得するにはどうすればよいですか?

答えて

3

あなたはTrainValidationSplitModelbestModelプロパティを使用して最適なモデルを入手することができます。

best_model = model.bestModel 

ランク直接ALSModelrankプロパティを使用してアクセスすることができます。

最大反復数を取得
best_model.rank 
10 

少しばかげている:

​​
10 
関連する問題