导入数据
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
从 Web 上的外部源加载数据;来自 Azure 中各种形式的基于云的存储,例如表、blob 和SQL数据库;以及从本地SQL Server数据库
类别: 数据输入和输出
模块概述
本文介绍如何使用 机器学习 Studio (经典) 中的导入数据模块将数据加载到现有云服务的机器学习试验中。
该模块现在提供一个向导,可帮助你选择存储选项,并从现有订阅和帐户中进行选择以快速配置所有选项。 需要编辑现有数据连接? 无问题;向导会加载以前的所有配置详细信息,这样就不必从头开始。
定义所需数据并连接到源后,导入数据会根据它包含的值推断每列的数据类型,并将数据加载到 机器学习 Studio (经典) 工作区中。 导入数据的输出是可用于任何试验的数据集。
重要
目前,对支持的存储帐户类型存在限制。 有关详细信息,请参阅 技术说明。
如果源数据发生更改,可以通过重新运行 导入数据来刷新数据集并添加新数据。 但是,如果每次运行试验时都不想从源重新读取,请选择“ 使用缓存的结果 ”选项为 TRUE。 选择此选项后,模块将检查试验是否以前使用相同的源和相同的输入选项运行。 如果找到以前的运行,将使用缓存中的数据,而不是从源重新加载数据。
注意
此模块以前命名为 Reader。 如果以前在试验中使用 了读取器 模块,则刷新试验时会将其重命名为 “导入数据 ”。
数据源
导入数据模块支持以下数据源。 单击链接获取有关使用每个数据源的详细说明和示例。
如果不确定数据的存储方式或位置,请参阅本指南,了解数据科学过程中的常见数据方案:机器学习中高级分析的方案。
数据源 | 使用场景 |
---|---|
通过 HTTP 的 Web URL | 获取使用 HTTP 的 Web URL 上托管的数据,并在 CSV、TSV、ARFF 或 SvmLight 格式中提供 |
Hive 查询 | 从 Hadoop 中的分布式存储获取数据。 使用 HiveQL 语言指定所需的数据 |
Azure SQL 数据库 | 从Azure SQL 数据库或从Azure SQL Data Warehouse获取数据 |
Azure 表 | 获取存储在 Azure 表服务中的数据 |
从 Azure Blob 存储导入 | 获取存储在 Azure Blob 服务中的数据 |
数据馈送提供程序 | 获取以 OData 格式作为源公开的数据 |
从本地 SQL Server 数据库导入 | 使用 Microsoft 数据管理 网关从本地SQL Server数据库获取数据 |
Azure Cosmos DB | 获取以 JSON 格式存储在 Azure Cosmos DB 中的数据。 |
提示
需要以 JSON 格式导入数据? R 和 Python 都支持 REST API,因此请使用“执行 Python 脚本”或“执行 R 脚本”模块分析数据并将其保存为 Azure ML 数据集。
或者,使用 SQL DB API for CosmosDB,该 API 支持多个 JSON 存储(包括MongoDB)使用 Azure Cosmos DB 导入选项读取数据。 有关详细信息,请参阅从 Azure Cosmos DB 导入。
如何使用导入数据
将 导入数据 模块添加到试验。 可以在 Studio (经典) 的 “数据输入和输出 ”类别中找到此模块。
单击“启动数据导入向导”以使用向导配置数据源。
该向导将获取帐户名称和凭据,并帮助你配置其他选项。 如果你正在编辑现有的配置,该向导将先加载当前值。
如果不想使用向导,请单击 “数据源”,然后选择要从中读取的基于云的存储的类型。
其他设置取决于所选存储的类型,以及存储是否受到保护。 可能需要提供帐户名称、文件类型或凭据。 某些源不需要身份验证;对于其他人,可能需要知道帐户名称、密钥或容器名称。
有关详细信息,请参阅 数据源列表。
如果要缓存数据集,以便在连续运行中重复使用,请选择 “使用缓存结果 ”选项。
假设模块参数没有其他更改,则试验仅在首次运行模块时加载数据,之后会使用数据集的缓存版本。
如果需要每次运行试验时重新加载数据,请取消选择此选项。
运行试验。
将数据导入 Studio (经典) 时,它会根据它包含的值(数值或分类)推断每列的数据类型。
如果标题存在,则使用该标题来命名输出数据集的列。
如果数据中没有现有的列标题,将使用以下格式生成新的列名称:col1, col2,…。 ,coln.
结果
导入完成后,请单击输出数据集,然后选择“可视化”查看是否已成功导入数据。
如果要保存数据以供重复使用,而不是每次运行试验时导入一组新的数据,请右键单击输出并选择“ 另存为数据集”。 选择数据集的名称。 即使试验中的数据集发生更改,保存的数据集也会在保存时保留数据,并且当实验中的数据集重新运行时不会更新数据。 这样就可以方便地创建数据的快照。
导入数据后,可能需要对它进行一些额外的准备,才能将它用于建模和分析:
使用编辑元数据更改列名、将列处理为不同的数据类型,或指示某些列是标签或特征。
使用选择数据集中的列选择要转换的或要在建模中使用的列子集。 通过使用 “添加列” 模块或 联接数据 模块,可以轻松地将转换的列重新加入到原始数据集。
使用分区和采样来分割数据集、执行采样或获取排名靠前的 n 行。
使用“应用SQL转换”通过SQL语句聚合数据、筛选或转换。
使用这些模块清理文本列并生成新的文本功能:
- 预处理文本
- 从文本中提取 N 元语法特征
- 命名实体识别
- 执行 Python 脚本,以基于 nltk 实现自定义 NLP。
技术说明
本部分提供 导入数据 模块的已知问题列表,以及一些不特定于源类型的常规故障排除信息。
支持的帐户类型
Azure 经常发布新的服务或新的存储类型;但是,在 机器学习 Studio (经典) 中实现对新帐户类型的支持时,通常存在延迟。
目前,机器学习支持除使用区域冗余存储 (ZRS) 以外的所有常规用途存储帐户。
支持本地冗余存储 (LRS) 和异地冗余存储选项。
支持块 blob,但不支持追加 blob。
常见问题
本部分介绍一些已知问题、常见问题和解决方法。
标头必须是单行
如果要从 CSV 文件导入,请注意,机器学习允许单个标头行。 不能插入多行标头。
导入时支持的自定义分隔符,但不支持导出
导入数据模块支持导入使用替代列分隔符的数据,例如分号 (;) ,该分号通常用于欧洲。 从外部存储中的 CSV 文件导入数据时,请选择 包含编码选项的 CSV ,然后选择受支持的编码。
但是,在使用 “转换为 CSV ”模块准备要导出的数据时,无法生成备用分隔符。
包含逗号的字符串数据的列分隔差
还可以在文本字段中随机找到可指定为列分隔符 (制表符、空格、逗号等) 的每个字符。 从 CSV 导入文本始终需要谨慎,以避免在不必要的新列中分隔文本。 在文本处理中,你可能以不同的方式遇到和处理过这一常见问题。
尝试导出包含逗号的字符串数据列时,也可能会出现问题。 机器学习不支持此类数据的任何特殊处理或特殊转换,例如将字符串括在引号中。 此外,不能在逗号之前使用转义字符来确保将逗号作为文本字符进行处理。 因此,将为字符串字段中遇到的每个逗号在输出文件中创建新字段。
若要避免导出时出现问题,请使用 预处理文本 模块从字符串字段中删除标点字符。
还可以使用自定义 R 脚本 或 Python 脚本 来处理复杂文本,并确保可以正确导入或导出数据。
需要 UTF-8 编码
机器学习需要 UTF-8 编码。 如果要导入的数据使用不同的编码,或者是从使用其他默认编码的数据源导出的,则文本中可能会出现各种问题。
例如,下图包含从Excel导出的相同多语言数据集,然后在文件类型和编码的四种不同组合下导入到机器学习。
第三个示例表示从 CSV 格式保存Excel期间丢失的数据,因为当时未指定正确的编码。 因此,如果遇到问题,请确保不仅检查要从中导入的文件,还要检查文件是否已从源正确导出。
数据集没有列名
如果要导入的数据集没有列名,请确保指定其中一个“无标题”选项。 执行此操作时, 导入数据 使用 Col1、Col2 等格式添加默认列名。 稍后,使用 “编辑元数据” 修复列名。
如果要将数据集导出到 CSV 文件,请使用 “编辑元数据 ”在转换或导出列名之前添加列名。
不受支持的数据源的解决方法
如果需要从不在列表中的源获取数据,可以尝试以下各种解决方法:
若要从计算机上的文件上传数据,请单击 Studio 中的“新建” (经典) ,选择“数据集”,然后选择“从本地文件”。 找到该文件并指定 TSV、CSV 等 (格式 ) 。 有关详细信息,请参阅 将训练数据导入 Studio (经典) 。
使用 R 或 Python。 可以将 “执行 R 脚本 ”模块与相应的 R 包配合使用,以便从其他云数据库获取数据。
“执行 Python 脚本”模块还允许从各种源读取和转换数据。 请参阅 Cortana Intelligence 库中 Microsoft 数据科学家的这些示例:
从 AWS 群集获取数据。 可以针对启用了 WebHCat 或 HCatalog 终结点的泛型 Hive 群集运行查询。 或者发布为页面并从 Web URL 读取。
从MongoDB获取数据。 Azure Cosmos DB 的数据迁移实用工具支持各种源和格式。 有关详细信息和示例,请参阅 Azure Cosmos DB:数据迁移工具
有关更多想法和解决方法,请参阅机器学习论坛或 Azure AI 库。
模块参数
必须使用不同的选项配置每个数据源。 此表仅列出所有数据源通用的选项。
名称 | 范围 | 类型 | 默认 | 说明 |
---|---|---|---|---|
数据源 | 列出 | 数据源或接收器 | Azure 存储中的 Blob 服务 | 数据源可以是 HTTP、匿名 HTTPS、Blob 服务或表服务中的文件、Azure 中的SQL数据库、Azure SQL Data Warehouse、Hive 表或 OData 终结点。 |
使用缓存的结果 | TRUE/FALSE | Boolean | FALSE | 如果为 TRUE,则模块将检查试验是否以前使用相同的源和相同的输入选项运行,如果找到以前的运行,则使用缓存中的数据。 如果为 FALSE,或者找到更改,将从源重新加载数据。 |
Outputs
名称 | 类型 | 说明 |
---|---|---|
结果数据集 | 数据表 | 包含已下载数据的数据集 |
例外
异常 | 描述 |
---|---|
错误 0027 | 如果两个对象必须具有相同的大小,但其大小却不相同,则会发生异常。 |
错误 0003 | 如果一个或多个输入为 null 或为空,则会发生异常。 |
错误 0029 | 如果传递的 URI 无效,则会发生异常。 |
错误 0030 | 如果无法下载文件,则会发生异常。 |
错误 0002 | 如果一个或多个参数无法分析或者无法从指定的类型转换成目标方法所需的类型,则会发生异常。 |
错误 0009 | 如果错误地指定了 Azure 存储帐户名或容器名,则会发生异常。 |
错误 0048 | 如果无法打开文件,则会发生异常。 |
错误 0015 | 如果数据库连接失败,则会发生异常。 |
错误 0046 | 如果无法在指定的路径中创建目录,则会发生异常。 |
错误 0049 | 如果无法分析文件,则会发生异常。 |
有关特定于 Studio (经典) 模块的错误列表,请参阅机器学习错误代码。
有关 API 异常的列表,请参阅 机器学习 REST API 错误代码。