MS Azure 自动机器学习准备中的错误 - 文件格式/编码错误?



我正在尝试按照以下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文件进行了以下实验:

1-st 执行,如 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 ...
################################### 

对于远程运行,传递给 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 显示了这一点。

相关内容

最新更新