我正在学习使用Spark
中的DataFrames
scala
API构建机器学习模型,并想知道可用于调整模型的所有超参数的列表。通过到目前为止的搜索,我发现了LinearRegression
的一些超参数,例如:
setMaxIter
setRegParam
setElasticNetParam
可以通过以下方式使用:
import org.apache.spark.ml.regression.LinearRegression
val lr = new LinearRegression().setMaxIter(100).setRegParam(0.3).setElasticNetParam(0.8)
val lrModel = lr.fit(training)
Spark中是否有文档页面或方法可以列出所有可调超参数?就像是:
LinearRegression.getParamList()
RandomForest.getParamList()
最佳答案
检查ml-tuning,利用ML-Pipelines
的优势,在其中将选择的特征从ParamGridBuilder
传递到CrossValidator
,然后运行管道以估计哪个组的性能最佳,如下例:
val lr = new LinearRegression()
.setMaxIter(10)
val paramGrid = new ParamGridBuilder()
.addGrid(lr.regParam, Array(0.1, 0.01))
.addGrid(lr.fitIntercept)
.addGrid(lr.elasticNetParam, Array(0.0, 0.5, 1.0))
.build()
val trainValidationSplit = new TrainValidationSplit()
.setEstimator(lr)
.setEvaluator(new RegressionEvaluator)
.setEstimatorParamMaps(paramGrid)
.setTrainRatio(0.8)
val model = trainValidationSplit.fit(training)
进一步,您可以探索scala文档ml.param,有一种方法
explainParam()
,但我没有使用它api/scala/pipeline