Example #1
0
        lr.regParam, [10.**x for x in range(-4, 5)]).build())

# COMMAND ----------

# MAGIC %md
# MAGIC Perform grid search using RMSE as metric to minimise.

# COMMAND ----------

gridSearchResults = [None] * len(paramMaps)

evaluator = RegressionEvaluator(metricName='rmse',
                                labelCol='rating',
                                predictionCol='prediction')

for i, model in lr.fitMultiple(featurizedTrainingSet, paramMaps):
    predictions = model.transform(featurizedTestSet, paramMaps[i])
    gridSearchResults[i] = evaluator.evaluate(predictions)
    print('α = {elasticNetParam:.2f}, λ = {regParam:.0e}, '
          'RMSE = {rmse:.3f}'.format(**{
              k.name: v
              for k, v in paramMaps[i].items()
          },
                                     rmse=gridSearchResults[i]))

bestModelIndex = np.argmin(gridSearchResults)
bestParams = {k.name: v for k, v in paramMaps[bestModelIndex].items()}

# COMMAND ----------

print('Best hyperparameters found:')