scala - Scala 在 if else 语句中赋值
问题描述
对scala来说很新。
我有一个 if else 语句,它基于条件为变量赋值。
import org.apache.spark.ml.{Pipeline, PipelineModel, PipelineStage}
modelType = "rf"
def train(trainingData: DataFrame): PipelineModel = {
val xgb = new XGBoostClassifier()
.setLabelCol("label")
.setFeaturesCol("features")
.setObjective("binary:logistic")
.setEvalMetric("auc")
val rf = new RandomForestClassifier()
.setLabelCol("label")
.setFeaturesCol("features")
.setImpurity("gini")
if (modelType == "rf") {
val pipeline = new Pipeline()
.setStages(Array[PipelineStage](rf))
} else if (modelType == "xgb") {
val pipeline = new Pipeline()
.setStages(Array[PipelineStage](rf))
}
pipeline.fit(trainingData)
}
但我看到这个错误:pipeline not found
。这是否意味着未分配管道变量?我该如何重写这个?
解决方案
您将 if 设置为变量
val xgb = new XGBoostClassifier()
.setLabelCol("label")
.setFeaturesCol("features")
.setObjective("binary:logistic")
.setEvalMetric("auc")
val rf = new RandomForestClassifier()
.setLabelCol("label")
.setFeaturesCol("features")
.setImpurity("gini")
val pipeline = if (modelType == "rf") {
new Pipeline()
.setStages(Array[PipelineStage](rf))
} else if (modelType == "xgb") {
new Pipeline()
.setStages(Array[PipelineStage](rf))
}
}
pipeline.fit(trainingData)
}
推荐阅读
- python - 删除文本文件中包含python中特定单词/字符串的整行
- amazon-web-services - 使用 AWS SAM 的 AWS Lambda 函数在 3 秒后超时
- python - 如何创建打印变量的快捷方式(vscode)
- go - 为什么代码中有些包以v2为前缀,而我克隆的文件路径却没有v2?
- swift - UIBarButton 单击以使用 Swift 交换 tableview 单元格 UI 值?
- android - Unity-Android-App 在第一次运行时崩溃,但从第二次开始运行正常
- android - 如何将从相机捕获并在 imageview 中显示的图像上传到 Firebase 存储?
- php - 如何根据网站是否支持http或https来获取网站名称?
- c# - C# - 添加column1和column 2的值时出现listview错误
- gradle - Gradle 下载触发 Windows Defender - 如何排除在 Temp 文件夹中下载的文件