gpt4 book ai didi

apache-spark - 与 Spark 中的管道进行交叉验证

转载 作者:行者123 更新时间:2023-12-03 17:40:07 24 4
gpt4 key购买 nike

管道外部的交叉验证。

val naivebayes
val indexer
val pipeLine = new Pipeline().setStages(Array(indexer, naiveBayes))

val paramGrid = new ParamGridBuilder()
.addGrid(naiveBayes.smoothing, Array(1.0, 0.1, 0.3, 0.5))
.build()
val crossValidator = new CrossValidator().setEstimator(pipeLine)
.setEvaluator(new MulticlassClassificationEvaluator)
.setNumFolds(2).setEstimatorParamMaps(paramGrid)

val crossValidatorModel = crossValidator.fit(trainData)

val predictions = crossValidatorModel.transform(testData)

管道内的交叉验证
val naivebayes
val indexer

// param grid for multiple parameter
val paramGrid = new ParamGridBuilder()
.addGrid(naiveBayes.smoothing, Array(0.35, 0.1, 0.2, 0.3, 0.5))
.build()

// validator for naive bayes
val crossValidator = new CrossValidator().setEstimator(naiveBayes)
.setEvaluator(new MulticlassClassificationEvaluator)
.setNumFolds(2).setEstimatorParamMaps(paramGrid)

// pipeline to execute compound transformation
val pipeLine = new Pipeline().setStages(Array(indexer, crossValidator))

// pipeline model
val pipeLineModel = pipeLine.fit(trainData)

// transform data
val predictions = pipeLineModel.transform(testData)

所以我想知道哪种方式更好以及它的优缺点。

对于这两个功能,我得到了相同的结果和准确性。即使是第二种方法也比第一种方法快一点。

最佳答案

根据我参加的培训 - 这应该是最佳实践:

cv = CrossValidator(estimator=lr,..)
pipelineModel = Pipeline(stages=[idx,assembler,cv])
cv_model= pipelineModel.fit(train)
这样,您的管道将只适合一次,而不适合每次使用 param_grid 重复运行时,这使其运行速度更快。
希望这可以帮助!

关于apache-spark - 与 Spark 中的管道进行交叉验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38349988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com