From 93057f735895a9831f453fc7066ed39b0436304a Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Mon, 25 Nov 2024 16:01:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=9C=BA=E5=99=A8=E5=AD=A6?= =?UTF-8?q?=E4=B9=A0=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/autoML/AutoMLController.java | 12 +- .../com/ruoyi/platform/domain/AutoMl.java | 11 +- .../ruoyi/platform/service/AutoMLService.java | 8 +- .../service/impl/AutoMLServiceImpl.java | 64 +++--- .../java/com/ruoyi/platform/vo/AutoMlVo.java | 183 ++++++++++++++++++ .../managementPlatform/AutoMLDaoMapper.xml | 54 ++---- 6 files changed, 246 insertions(+), 86 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/AutoMlVo.java diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMLController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMLController.java index 10b5a217..d859e491 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMLController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMLController.java @@ -5,6 +5,7 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.domain.AutoMl; import com.ruoyi.platform.service.AutoMLService; +import com.ruoyi.platform.vo.AutoMlVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.data.domain.Page; @@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.io.IOException; @RestController @RequestMapping("autoML") @@ -33,18 +35,18 @@ public class AutoMLController extends BaseController { @PostMapping @ApiOperation("新增自动机器学习") - public GenericsAjaxResult addAutoMl(@RequestBody AutoMl autoMl) throws Exception { - return genericsSuccess(this.autoMLService.save(autoMl)); + public GenericsAjaxResult addAutoMl(@RequestBody AutoMlVo autoMlVo) throws Exception { + return genericsSuccess(this.autoMLService.save(autoMlVo)); } @PutMapping @ApiOperation("编辑自动机器学习") - public GenericsAjaxResult editAutoMl(@RequestBody AutoMl autoMl) throws Exception { - return genericsSuccess(this.autoMLService.edit(autoMl)); + public GenericsAjaxResult editAutoMl(@RequestBody AutoMlVo autoMlVo) throws Exception { + return genericsSuccess(this.autoMLService.edit(autoMlVo)); } @GetMapping("/getAutoMlDetail") @ApiOperation("获取自动机器学习详细信息") - public GenericsAjaxResult getAutoMlDetail(@RequestParam("id") Long id){ + public GenericsAjaxResult getAutoMlDetail(@RequestParam("id") Long id) throws IOException { return genericsSuccess(this.autoMLService.getAutoMlDetail(id)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/AutoMl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/AutoMl.java index e37f6bbb..811168da 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/AutoMl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/AutoMl.java @@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; +import java.util.Map; @Data @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) @@ -25,9 +26,6 @@ public class AutoMl { @ApiModelProperty(value = "任务类型:classification或regression") private String taskType; - @ApiModelProperty(value = "数据集名称") - private String datasetName; - @ApiModelProperty(value = "搜索合适模型的时间限制(以秒为单位)。通过增加这个值,auto-sklearn有更高的机会找到更好的模型。默认3600,非必传。") private Integer timeLeftForThisTask; @@ -128,9 +126,6 @@ public class AutoMl { @ApiModelProperty(value = "文件夹存放配置输出和日志文件,默认/tmp/automl") private String tmpFolder; - @ApiModelProperty(value = "数据集csv文件路径") - private String dataCsv; - @ApiModelProperty(value = "数据集csv文件中哪几列是预测目标列,逗号分隔") private String targetColumns; @@ -182,6 +177,6 @@ public class AutoMl { private Date updateTime; - @TableField(exist = false) - private VersionVo versionVo; + private String dataset; + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMLService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMLService.java index 2b678382..78e25480 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMLService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMLService.java @@ -1,22 +1,24 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.domain.AutoMl; +import com.ruoyi.platform.vo.AutoMlVo; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Map; public interface AutoMLService { Page queryByPage(String mlName, PageRequest pageRequest); - AutoMl save(AutoMl autoMl) throws Exception; + AutoMl save(AutoMlVo autoMlVo) throws Exception; - String edit(AutoMl autoMl) throws Exception; + String edit(AutoMlVo autoMlVo) throws Exception; String delete(Long id); - AutoMl getAutoMlDetail(Long id); + AutoMlVo getAutoMlDetail(Long id) throws IOException; Map upload(MultipartFile file, String uuid) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMLServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMLServiceImpl.java index f052f32e..40fd4ce2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMLServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMLServiceImpl.java @@ -5,14 +5,14 @@ import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.AutoMl; import com.ruoyi.platform.mapper.AutoMLDao; import com.ruoyi.platform.service.AutoMLService; -import com.ruoyi.platform.utils.DVCUtils; -import com.ruoyi.platform.utils.FileUtil; -import com.ruoyi.platform.utils.K8sClientUtil; +import com.ruoyi.platform.utils.*; +import com.ruoyi.platform.vo.AutoMlVo; import io.kubernetes.client.openapi.models.V1Pod; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -22,6 +22,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.File; +import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -59,39 +60,35 @@ public class AutoMLServiceImpl implements AutoMLService { } @Override - public AutoMl save(AutoMl autoMl) throws Exception { - AutoMl autoMlByName = autoMLDao.getAutoMlByName(autoMl.getMlName()); + public AutoMl save(AutoMlVo autoMlVo) throws Exception { + AutoMl autoMlByName = autoMLDao.getAutoMlByName(autoMlVo.getMlName()); if (autoMlByName != null) { throw new RuntimeException("实验名称已存在"); } - + AutoMl autoMl = new AutoMl(); + BeanUtils.copyProperties(autoMlVo, autoMl); String username = SecurityUtils.getLoginUser().getUsername(); autoMl.setCreateBy(username); autoMl.setUpdateBy(username); - - String sourcePath = autoMl.getVersionVo().getUrl(); - String rootPath = localPath + username + "/automl/" + autoMl.getMlName() + "/" + autoMl.getDatasetName(); - dvcUtils.moveFiles(sourcePath, rootPath); - autoMl.setDataCsv(rootPath + "/" + autoMl.getVersionVo().getFileName()); + String datasetJson = JacksonUtil.toJSONString(autoMlVo.getDataset()); + autoMl.setDataset(datasetJson); autoMLDao.save(autoMl); return autoMl; } @Override - public String edit(AutoMl autoMl) throws Exception { - AutoMl oldAutoMl = autoMLDao.getAutoMlByName(autoMl.getMlName()); - if (oldAutoMl != null && !oldAutoMl.getId().equals(autoMl.getId())) { + public String edit(AutoMlVo autoMlVo) throws Exception { + AutoMl oldAutoMl = autoMLDao.getAutoMlByName(autoMlVo.getMlName()); + if (oldAutoMl != null && !oldAutoMl.getId().equals(autoMlVo.getId())) { throw new RuntimeException("实验名称已存在"); } - - String username = SecurityUtils.getLoginUser().getUsername(); + AutoMl autoMl = new AutoMl(); + BeanUtils.copyProperties(autoMlVo, autoMl); +// String username = SecurityUtils.getLoginUser().getUsername(); + String username = "admin"; autoMl.setUpdateBy(username); - if (autoMl.getVersionVo() != null && StringUtils.isNotEmpty(autoMl.getVersionVo().getUrl())) { - String sourcePath = autoMl.getVersionVo().getUrl(); - String rootPath = localPath + username + "/automl/" + autoMl.getMlName() + "/" + autoMl.getDatasetName(); - dvcUtils.moveFiles(sourcePath, rootPath); - autoMl.setDataCsv(rootPath + "/" + autoMl.getVersionVo().getFileName()); - } + String datasetJson = JacksonUtil.toJSONString(autoMlVo.getDataset()); + autoMl.setDataset(datasetJson); autoMLDao.edit(autoMl); return "修改成功"; @@ -104,8 +101,7 @@ public class AutoMLServiceImpl implements AutoMLService { throw new RuntimeException("服务不存在"); } -// String username = SecurityUtils.getLoginUser().getUsername(); - String username = "admin"; + String username = SecurityUtils.getLoginUser().getUsername(); String createBy = autoMl.getCreateBy(); if (!(StringUtils.equals(username, "admin") || StringUtils.equals(username, createBy))) { throw new RuntimeException("无权限删除该服务"); @@ -116,8 +112,14 @@ public class AutoMLServiceImpl implements AutoMLService { } @Override - public AutoMl getAutoMlDetail(Long id) { - return autoMLDao.getAutoMlById(id); + public AutoMlVo getAutoMlDetail(Long id) throws IOException { + AutoMl autoMl = autoMLDao.getAutoMlById(id); + AutoMlVo autoMlVo = new AutoMlVo(); + BeanUtils.copyProperties(autoMl, autoMlVo); + if (StringUtils.isNotEmpty(autoMl.getDataset())) { + autoMlVo.setDataset(JsonUtils.jsonToMap(autoMl.getDataset())); + } + return autoMlVo; } @Override @@ -151,21 +153,11 @@ public class AutoMLServiceImpl implements AutoMLService { StringBuffer command = new StringBuffer(); command.append("nohup python /opt/automl.py --task_type " + autoMl.getTaskType()); - if (StringUtils.isNotEmpty(autoMl.getDataCsv())) { - command.append(" --data_csv " + autoMl.getDataCsv()); - } else { - throw new Exception("训练数据为空"); - } if (StringUtils.isNotEmpty(autoMl.getTargetColumns())) { command.append(" --target_columns " + autoMl.getTargetColumns()); } else { throw new Exception("目标列为空"); } - if (StringUtils.isNotEmpty(autoMl.getDatasetName())) { - command.append(" --dataset_name " + autoMl.getDatasetName()); - } else { - throw new Exception("数据集名称为空"); - } // String username = SecurityUtils.getLoginUser().getUsername().toLowerCase(); String username = "admin"; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/AutoMlVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/AutoMlVo.java new file mode 100644 index 00000000..3fbe5cc4 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/AutoMlVo.java @@ -0,0 +1,183 @@ +package com.ruoyi.platform.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.Map; + +@Data +@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) +@ApiModel(description = "自动机器学习") +public class AutoMlVo { + private Long id; + + @ApiModelProperty(value = "实验名称") + private String mlName; + + @ApiModelProperty(value = "实验描述") + private String mlDescription; + + @ApiModelProperty(value = "任务类型:classification或regression") + private String taskType; + + @ApiModelProperty(value = "搜索合适模型的时间限制(以秒为单位)。通过增加这个值,auto-sklearn有更高的机会找到更好的模型。默认3600,非必传。") + private Integer timeLeftForThisTask; + + @ApiModelProperty(value = "单次调用机器学习模型的时间限制(以秒为单位)。如果机器学习算法运行超过时间限制,将终止模型拟合。将这个值设置得足够高,这样典型的机器学习算法就可以适用于训练数据。默认600,非必传。") + private Integer perRunTimeLimit; + + @ApiModelProperty(value = "集成模型数量,如果设置为0,则没有集成。默认50,非必传。") + private Integer ensembleSize; + + @ApiModelProperty(value = "设置为None将禁用集成构建,设置为SingleBest仅使用单个最佳模型而不是集成,设置为default,它将对单目标问题使用EnsembleSelection,对多目标问题使用MultiObjectiveDummyEnsemble。默认default,非必传。") + private String ensembleClass; + + @ApiModelProperty(value = "在构建集成时只考虑ensemble_nbest模型。这是受到了“最大限度地利用集成选择”中引入的库修剪概念的启发。这是独立于ensemble_class参数的,并且这个修剪步骤是在构造集成之前完成的。默认50,非必传。") + private Integer ensembleNbest; + + @ApiModelProperty(value = "定义在磁盘中保存的模型的最大数量。额外的模型数量将被永久删除。由于这个变量的性质,它设置了一个集成可以使用多少个模型的上限。必须是大于等于1的整数。如果设置为None,则所有模型都保留在磁盘上。默认50,非必传。") + private Integer maxModelsOnDisc; + + @ApiModelProperty(value = "随机种子,将决定输出文件名。默认1,非必传。") + private Integer seed; + + @ApiModelProperty(value = "机器学习算法的内存限制(MB)。如果auto-sklearn试图分配超过memory_limit MB,它将停止拟合机器学习算法。默认3072,非必传。") + private Integer memoryLimit; + + @ApiModelProperty(value = "如果为None,则使用所有可能的分类算法。否则,指定搜索中包含的步骤和组件。有关可用组件,请参见/pipeline/components//*。与参数exclude不兼容。多选,逗号分隔。包含:adaboost\n" + + "bernoulli_nb\n" + + "decision_tree\n" + + "extra_trees\n" + + "gaussian_nb\n" + + "gradient_boosting\n" + + "k_nearest_neighbors\n" + + "lda\n" + + "liblinear_svc\n" + + "libsvm_svc\n" + + "mlp\n" + + "multinomial_nb\n" + + "passive_aggressive\n" + + "qda\n" + + "random_forest\n" + + "sgd") + private String includeClassifier; + + @ApiModelProperty(value = "如果为None,则使用所有可能的特征预处理算法。否则,指定搜索中包含的步骤和组件。有关可用组件,请参见/pipeline/components//*。与参数exclude不兼容。多选,逗号分隔。包含:densifier\n" + + "extra_trees_preproc_for_classification\n" + + "extra_trees_preproc_for_regression\n" + + "fast_ica\n" + + "feature_agglomeration\n" + + "kernel_pca\n" + + "kitchen_sinks\n" + + "liblinear_svc_preprocessor\n" + + "no_preprocessing\n" + + "nystroem_sampler\n" + + "pca\n" + + "polynomial\n" + + "random_trees_embedding\n" + + "select_percentile_classification\n" + + "select_percentile_regression\n" + + "select_rates_classification\n" + + "select_rates_regression\n" + + "truncatedSVD") + private String includeFeaturePreprocessor; + + @ApiModelProperty(value = "如果为None,则使用所有可能的回归算法。否则,指定搜索中包含的步骤和组件。有关可用组件,请参见/pipeline/components//*。与参数exclude不兼容。多选,逗号分隔。包含:adaboost,\n" + + "ard_regression,\n" + + "decision_tree,\n" + + "extra_trees,\n" + + "gaussian_process,\n" + + "gradient_boosting,\n" + + "k_nearest_neighbors,\n" + + "liblinear_svr,\n" + + "libsvm_svr,\n" + + "mlp,\n" + + "random_forest,\n" + + "sgd") + private String includeRegressor; + + private String excludeClassifier; + + private String excludeRegressor; + + private String excludeFeaturePreprocessor; + + @ApiModelProperty(value = "测试集的比率,0到1之间") + private Float testSize; + + @ApiModelProperty(value = "如何处理过拟合,如果使用基于“cv”的方法或Splitter对象,可能需要使用resampling_strategy_arguments。holdout或crossValid") + private String resamplingStrategy; + + @ApiModelProperty(value = "重采样划分训练集和验证集,训练集的比率,0到1之间") + private Float trainSize; + + @ApiModelProperty(value = "拆分数据前是否进行shuffle") + private Boolean shuffle; + + @ApiModelProperty(value = "交叉验证的折数,当resamplingStrategy为crossValid时,此项必填,为整数") + private Integer folds; + + @ApiModelProperty(value = "文件夹存放配置输出和日志文件,默认/tmp/automl") + private String tmpFolder; + + @ApiModelProperty(value = "数据集csv文件中哪几列是预测目标列,逗号分隔") + private String targetColumns; + + @ApiModelProperty(value = "自定义指标名称") + private String metricName; + + @ApiModelProperty(value = "模型优化目标指标及权重,json格式。分类的指标包含:accuracy\n" + + "balanced_accuracy\n" + + "roc_auc\n" + + "average_precision\n" + + "log_loss\n" + + "precision_macro\n" + + "precision_micro\n" + + "precision_samples\n" + + "precision_weighted\n" + + "recall_macro\n" + + "recall_micro\n" + + "recall_samples\n" + + "recall_weighted\n" + + "f1_macro\n" + + "f1_micro\n" + + "f1_samples\n" + + "f1_weighted\n" + + "回归的指标包含:mean_absolute_error\n" + + "mean_squared_error\n" + + "root_mean_squared_error\n" + + "mean_squared_log_error\n" + + "median_absolute_error\n" + + "r2") + private String metrics; + + @ApiModelProperty(value = "指标优化方向,是越大越好还是越小越好") + private Boolean greaterIsBetter; + + @ApiModelProperty(value = "模型计算并打印指标") + private String scoringFunctions; + + private Integer state; + + private String runState; + + private Double progress; + + private String createBy; + + private Date createTime; + + private String updateBy; + + private Date updateTime; + + /** + * 对应数据集 + */ + private Map dataset; +} diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMLDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMLDaoMapper.xml index e5fecd5a..73a37ff0 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMLDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/AutoMLDaoMapper.xml @@ -2,23 +2,26 @@ - insert into auto_ml(ml_name, ml_description, task_type, dataset_name, time_left_for_this_task, + insert into auto_ml(ml_name, ml_description, task_type, dataset, time_left_for_this_task, per_run_time_limit, ensemble_size, ensemble_class, ensemble_nbest, max_models_on_disc, seed, memory_limit, include_classifier, include_feature_preprocessor, include_regressor, exclude_classifier, exclude_regressor, exclude_feature_preprocessor, test_size, resampling_strategy, train_size, - shuffle, folds, data_csv, target_columns, metric_name, metrics,greater_is_better,scoring_functions,tmp_folder, - create_by,update_by) - values (#{autoMl.mlName}, #{autoMl.mlDescription}, #{autoMl.taskType}, #{autoMl.datasetName}, + shuffle, folds, target_columns, metric_name, metrics, greater_is_better, scoring_functions, + tmp_folder, + create_by, update_by) + values (#{autoMl.mlName}, #{autoMl.mlDescription}, #{autoMl.taskType}, #{autoMl.dataset}, #{autoMl.timeLeftForThisTask}, #{autoMl.perRunTimeLimit}, #{autoMl.ensembleSize}, #{autoMl.ensembleClass}, #{autoMl.ensembleNbest}, #{autoMl.maxModelsOnDisc}, #{autoMl.seed}, #{autoMl.memoryLimit}, #{autoMl.includeClassifier}, #{autoMl.includeFeaturePreprocessor}, #{autoMl.includeRegressor}, #{autoMl.excludeClassifier}, - #{autoMl.excludeRegressor}, #{autoMl.excludeFeaturePreprocessor}, #{autoMl.testSize}, #{autoMl.resamplingStrategy}, + #{autoMl.excludeRegressor}, #{autoMl.excludeFeaturePreprocessor}, #{autoMl.testSize}, + #{autoMl.resamplingStrategy}, #{autoMl.trainSize}, #{autoMl.shuffle}, - #{autoMl.folds}, #{autoMl.dataCsv}, - #{autoMl.targetColumns}, #{autoMl.metricName}, #{autoMl.metrics},#{autoMl.greaterIsBetter},#{autoMl.scoringFunctions},#{autoMl.tmpFolder}, + #{autoMl.folds}, + #{autoMl.targetColumns}, #{autoMl.metricName}, #{autoMl.metrics}, #{autoMl.greaterIsBetter}, + #{autoMl.scoringFunctions}, #{autoMl.tmpFolder}, #{autoMl.createBy}, #{autoMl.updateBy}) @@ -40,8 +43,8 @@ task_type = #{autoMl.taskType}, - - dataset_name = #{autoMl.datasetName}, + + dataset = #{autoMl.dataset}, time_left_for_this_task = #{autoMl.timeLeftForThisTask}, @@ -67,24 +70,13 @@ memory_limit = #{autoMl.memoryLimit}, - - include_classifier = #{autoMl.includeClassifier}, - - - include_feature_preprocessor = #{autoMl.includeFeaturePreprocessor}, - - - include_regressor = #{autoMl.includeRegressor}, - - - exclude_classifier = #{autoMl.excludeClassifier}, - - - exclude_regressor = #{autoMl.excludeRegressor}, - - - exclude_feature_preprocessor = #{autoMl.excludeFeaturePreprocessor}, - + include_classifier = #{autoMl.includeClassifier}, + include_feature_preprocessor = #{autoMl.includeFeaturePreprocessor}, + include_regressor = #{autoMl.includeRegressor}, + exclude_classifier = #{autoMl.excludeClassifier}, + exclude_regressor = #{autoMl.excludeRegressor}, + exclude_feature_preprocessor = #{autoMl.excludeFeaturePreprocessor}, + scoring_functions = #{autoMl.scoringFunctions}, test_size = #{autoMl.testSize}, @@ -100,9 +92,6 @@ folds = #{autoMl.folds}, - - data_csv = #{autoMl.dataCsv}, - tmp_folder = #{autoMl.tmpFolder}, @@ -112,12 +101,9 @@ metrics = #{autoMl.metrics}, - + greater_is_better = #{autoMl.greaterIsBetter}, - - scoring_functions = #{autoMl.scoringFunctions}, - target_columns = #{autoMl.targetColumns},