Spark ML CrossValidator获取最佳参数

获取所有参数组合以及对应的cv评估结果,zip之后进行排序(按照metric由好往坏),提取出对应的Param:value字典

def getBestParam(cvModel):
    params = cvModel.getEstimatorParamMaps()
    avgMetrics = cvModel.avgMetrics

    all_params = list(zip(params, avgMetrics))
    best_param = sorted(all_params, key=lambda x: x[1], reverse=True)[0]
    return best_param

for p, v in best_param.items():
	print("{} : {}".format(p.name, v)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark CrossValidator一个用于模型选择和调优的工具,它可以自动选择最佳的超参数来训练模型。CrossValidator使用交叉验证来评估不同的超参数组合,并选择具有最佳性能的模型。在Spark中,CrossValidator通常与Pipeline一起使用,以便在交叉验证期间自动调整管道中的所有阶段。以下是使用CrossValidator的一些步骤: 1. 定义一个评估器(Estimator),例如一个分类器或回归器。 2. 定义一个参数网格(Parameter Grid),其中包含要调整的超参数及其可能的值。 3. 定义一个评估器的评估方法(Evaluator),例如均方根误差(RMSE)或二元分类器的准确性。 4. 创建一个Pipeline,其中包含所有必要的数据转换和评估器。 5. 创建一个CrossValidator,将评估器、参数网格和评估方法传递给它。 6. 使用CrossValidator拟合数据,它将自动尝试不同的超参数组合,并返回具有最佳性能的模型。 下面是一个使用CrossValidator的示例代码: ```python from pyspark.ml import Pipeline from pyspark.ml.classification import RandomForestClassifier from pyspark.ml.evaluation import BinaryClassificationEvaluator from pyspark.ml.tuning import CrossValidator, ParamGridBuilder # 定义一个随机森林分类器 rf = RandomForestClassifier() # 定义一个参数网格,包含要调整的超参数及其可能的值 paramGrid = ParamGridBuilder() \ .addGrid(rf.numTrees, [10, 20, 30]) \ .addGrid(rf.maxDepth, [5, 10, 15]) \ .build() # 定义一个二元分类器的评估方法 evaluator = BinaryClassificationEvaluator() # 创建一个Pipeline,其中包含所有必要的数据转换和评估器 pipeline = Pipeline(stages=[vectorAssembler, vectorIndexer, rf]) # 创建一个CrossValidator,将评估器、参数网格和评估方法传递给它 cv = CrossValidator(estimator=pipeline, estimatorParamMaps=paramGrid, evaluator=evaluator, numFolds=5) # 使用CrossValidator拟合数据,它将自动尝试不同的超参数组合,并返回具有最佳性能的模型 cvModel = cv.fit(train) # 使用最佳模型进行预测 predictions = cvModel.transform(test) # 评估模型性能 auc = evaluator.evaluate(predictions) print("AUC: ", auc) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值