如何在 Pyspark 中交叉验证后获得最佳超参数值?
How to get the best hyperparameter value after crossvalidation in Pyspark?
我正在对一组超参数的数据集进行交叉验证。
lr = LogisticRegression()
paramGrid = ParamGridBuilder() \
.addGrid(lr.regParam, [0, 0.01, 0.05, 0.1, 0.5, 1]) \
.addGrid(lr.elasticNetParam, [0.0, 0.1, 0.5, 0.8, 1]) \
.build()
evaluator = BinaryClassificationEvaluator()
cv = CrossValidator(estimator=lr, estimatorParamMaps=grid, evaluator=evaluator)
我想知道 regParam 和 elasticNetParam 的最佳值。在 python 中,我们可以选择在交叉验证后获得最佳参数。 pyspark中有什么方法可以在交叉验证后获得参数的最佳值吗?
For example : regParam - 0.05
elasticNetParam - 0.1
嗯,你必须先安装你的 CrossValidator:
cv_model = cv.fit(train_data)
完成后,您将在 best_model 中得到一个:
best_model = cv_model.bestModel
要提取参数,您将不得不做这件丑陋的事情:
best_reg_param = best_model._java_obj.getRegParam()
best_elasticnet_param = best_model._java_obj.getElasticNetParam()
假设您使用以下参数构建了逻辑回归模型。
lr = LogisticRegression()
paramGrid = ParamGridBuilder() \
.addGrid(lr.regParam, [0, 0.01, 0.05, 0.1, 0.5, 1]) \
.addGrid(lr.elasticNetParam, [0.0, 0.1, 0.5, 0.8, 1]) \
.build()
cv = CrossValidator(estimator=lr, estimatorParamMaps=grid, evaluator=evaluator)
cv_model = cv.fit(train_data)
您可以使用以下代码提取最佳模型参数:
print(cv_model.getEstimatorParamMaps()[np.argmax(cv_model.avgMetrics)])
我正在对一组超参数的数据集进行交叉验证。
lr = LogisticRegression()
paramGrid = ParamGridBuilder() \
.addGrid(lr.regParam, [0, 0.01, 0.05, 0.1, 0.5, 1]) \
.addGrid(lr.elasticNetParam, [0.0, 0.1, 0.5, 0.8, 1]) \
.build()
evaluator = BinaryClassificationEvaluator()
cv = CrossValidator(estimator=lr, estimatorParamMaps=grid, evaluator=evaluator)
我想知道 regParam 和 elasticNetParam 的最佳值。在 python 中,我们可以选择在交叉验证后获得最佳参数。 pyspark中有什么方法可以在交叉验证后获得参数的最佳值吗?
For example : regParam - 0.05
elasticNetParam - 0.1
嗯,你必须先安装你的 CrossValidator:
cv_model = cv.fit(train_data)
完成后,您将在 best_model 中得到一个:
best_model = cv_model.bestModel
要提取参数,您将不得不做这件丑陋的事情:
best_reg_param = best_model._java_obj.getRegParam()
best_elasticnet_param = best_model._java_obj.getElasticNetParam()
假设您使用以下参数构建了逻辑回归模型。
lr = LogisticRegression()
paramGrid = ParamGridBuilder() \
.addGrid(lr.regParam, [0, 0.01, 0.05, 0.1, 0.5, 1]) \
.addGrid(lr.elasticNetParam, [0.0, 0.1, 0.5, 0.8, 1]) \
.build()
cv = CrossValidator(estimator=lr, estimatorParamMaps=grid, evaluator=evaluator)
cv_model = cv.fit(train_data)
您可以使用以下代码提取最佳模型参数:
print(cv_model.getEstimatorParamMaps()[np.argmax(cv_model.avgMetrics)])