0

我正在尝试按照以下 Github 示例部署 MS Azure 自动化机器学习:

https://github.com/Azure/MachineLearningNotebooks/tree/master/how-to-use-azureml/automated-machine-learning/classification-bank-marketing

我更改了那里的代码以提供我的数据,但在执行 autoML 运行时出现以下错误:

automl.client.core.common.exceptions.DataprepException:无法执行指定的转换。

来自:文件“/azureml-envs/azureml_e9e27206cd19de471f4e5c7a1171037e/lib/python3.6/site-packages/azureml/automl/core/dataprep_utilities.py”,第 50 行,在 try_retrieve_pandas_dataframe_adb

现在,我以为有什么。我的数据有问题,但后来我对原始 csv 文件进行了以下实验:

第一次执行,如 Github 示例,直接基于 http 链接构建数据流 第二次执行基于相同的 csv 构建数据流,但下载到我的共享。

在第二种情况下,我得到了与我的数据相同的错误。这意味着,Azure autoML 运行/数据流/准备过程仅接受特定的文件格式,这些文件格式在保存到我的驱动器时发生了更改。我不确定这是否与编码或其他有关。你能建议吗?

########################################
#Case 1, Error returned

data= "\\\dwdf219\\...\\bankmarketing_train.csv"
dflow = dprep.auto_read_file(data)
dflow.get_profile()
X_train = dflow.drop_columns(columns=['y'])
y_train = dflow.keep_columns(columns=['y'], validate_column_exists=True)
dflow.head()

# Train
automl_settings = {
    "iteration_timeout_minutes": 10,
    "iterations": 5,
    "n_cross_validations": 2,
    "primary_metric": 'AUC_weighted',
    "preprocess": True,
    "max_concurrent_iterations": 5,
    "verbosity": logging.INFO,
}

automl_config = AutoMLConfig(task = 'classification',
                             debug_log = 'automl_errors.log',
                             path = project_folder,
                             run_configuration=conda_run_config,
                             X = X_train,
                             y = y_train,
                             **automl_settings
                            )     

remote_run = experiment.submit(automl_config, show_output = True)


########################################
#Case 2, all works fine

data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/bankmarketing_train.csv"
dflow = dprep.auto_read_file(data)
dflow.get_profile()
X_train = dflow.drop_columns(columns=['y'])
y_train = dflow.keep_columns(columns=['y'], validate_column_exists=True)
dflow.head()

# Train ...
################################### 
4

1 回答 1

0

对于远程运行,传递给 dprep 的文件在远程使用,因此它必须可以在远程 (Linux) 上访问。

Linux 远程理解 https 和数据存储,但无法处理 Windows 样式的文件共享。(在这种情况下为\\dwdf219\...\bankmarketing_train.csv)

一种解决方案是使用数据存储传递数据。

您可以使用以下方式上传到数据存储:

ds = ws.get_default_datastore()
ds.upload(src_dir='./myfolder', target_path='mypath', overwrite=True, show_progress=True)

然后在 auto_read_file 中使用数据存储引用:

dflow = dprep.auto_read_file(path=ds.path('mypath/bankmarketing_train.csv'))

示例笔记本auto-ml-remote-amlcompute.ipynb显示了这一点。

于 2019-07-20T00:48:07.483 回答