使用CrossValidator和ParamGridBuilder查找最佳管道模型

我已经有一个可以接受的模型,但我希望通过在Spark ML Pipeline中使用CrossValidator和ParamGridBuilder来调整其参数以改进模型。

作为Estimator,我将使用现有的管道。在ParamMaps中,我不知道该放什么,我不理解它。作为Evaluator,我将使用之前已经创建的RegressionEvaluator。

我打算进行5折交叉验证,并使用树中10个不同深度值的列表进行测试。

如何选择并显示RMSE最低的最佳模型?

实际例子:

    from pyspark.ml import Pipeline    from pyspark.ml.regression import DecisionTreeRegressor    from pyspark.ml.feature import VectorIndexer    from pyspark.ml.evaluation import RegressionEvaluator    dt = DecisionTreeRegressor()    dt.setPredictionCol("Predicted_PE")    dt.setMaxBins(100)    dt.setFeaturesCol("features")    dt.setLabelCol("PE")    dt.setMaxDepth(8)    pipeline = Pipeline(stages=[vectorizer, dt])    model = pipeline.fit(trainingSetDF)    regEval = RegressionEvaluator(predictionCol = "Predicted_XX", labelCol = "XX", metricName = "rmse")    rmse = regEval.evaluate(predictions)    print("Root Mean Squared Error: %.2f" % rmse)    (1) Spark Jobs     (2) Root Mean Squared Error: 3.60

需求:

    from pyspark.ml.tuning import CrossValidator, ParamGridBuilder    dt2 = DecisionTreeRegressor()    dt2.setPredictionCol("Predicted_PE")    dt2.setMaxBins(100)    dt2.setFeaturesCol("features")    dt2.setLabelCol("PE")    dt2.setMaxDepth(10)    pipeline2 = Pipeline(stages=[vectorizer, dt2])    model2 = pipeline2.fit(trainingSetDF)    regEval2 = RegressionEvaluator(predictionCol = "Predicted_PE", labelCol = "PE", metricName = "rmse")    paramGrid = ParamGridBuilder().build() # ??????    crossval = CrossValidator(estimator = pipeline2, estimatorParamMaps = paramGrid, evaluator=regEval2, numFolds = 5) # ?????    rmse2 = regEval2.evaluate(predictions)    #bestPipeline = ????    #bestLRModel = ????    #bestParams = ????    print("Root Mean Squared Error: %.2f" % rmse2)    (1) Spark Jobs     (2) Root Mean Squared Error: 3.60     # the same ¿?

回答:

你需要在crossval对象上调用.fit()方法,并使用你的训练数据来创建cv模型。这将执行交叉验证。然后,你可以从中获取最佳模型(根据你的评估指标)。例如:

cvModel = crossval.fit(trainingData) myBestModel = cvModel.bestModel

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注