gpt4 book ai didi

scala - 如何在 spark-ml CrossValidatorModel 中获得最佳逻辑回归的系数?

转载 作者:行者123 更新时间:2023-12-04 23:39:36 26 4
gpt4 key购买 nike

我使用逻辑回归和 spark-ml 管道训练了一个简单的 CrossValidatorModel。我可以预测新数据,但我想超越黑匣子并对系数进行一些分析

 val lr = new LogisticRegression().
setFitIntercept(true).
setMaxIter(maxIter).
setElasticNetParam(alpha).
setStandardization(true).
setFamily("binomial").
setWeightCol("weight").
setFeaturesCol("features").
setLabelCol("response")

val assembler = new VectorAssembler().
setInputCols(Array("feat1", "feat2")).
setOutputCol("features")

val modelPipeline = new Pipeline().
setStages(Array(assembler,lr))

val evaluator = new BinaryClassificationEvaluator()
.setLabelCol("response")

然后我定义一个参数网格,并在网格上进行训练以获得最佳模型 wrt AUC
val paramGrid = new ParamGridBuilder().
addGrid(lr.regParam, lambdas).
build()

val pipeline = new CrossValidator().
setEstimator(modelPipeline).
setEvaluator(evaluator).
setEstimatorParamMaps(paramGrid).
setNumFolds(nfolds)

val cvModel = pipeline.fit(train)

如何获得最佳逻辑回归模型的系数(β)?

最佳答案

提取最佳模型:

val bestModel = cvModel.bestModel match {
case pm: PipelineModel => Some(pm)
case _ => None
}

找到逻辑回归模型:
val lrm = bestModel
.map(_.stages.collect { case lrm: LogisticRegressionModel => lrm })
.flatMap(_.headOption)

提取系数:
lrm.map(m => (m.intercept, m.coefficients))

快速和肮脏的等价物:
val lrm: LogisticRegressionModel = cvModel
.bestModel.asInstanceOf[PipelineModel]
.stages
.last.asInstanceOf[LogisticRegressionModel]

(lrm.intercept, lrm.coefficients)

关于scala - 如何在 spark-ml CrossValidatorModel 中获得最佳逻辑回归的系数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41920959/

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