如何防止 Azure ML Studio 在导入数据集时将特征列转换为 DateTime
Posted
技术标签:
【中文标题】如何防止 Azure ML Studio 在导入数据集时将特征列转换为 DateTime【英文标题】:How to prevent Azure ML Studio from converting a feature column to DateTime while importing a dataset 【发布时间】:2019-01-17 17:14:34 【问题描述】:我在尝试在 Azure ML Studio 中加载数据集时遇到了一些问题,该数据集包含一个看起来像 DateTime 的列,但实际上是一个字符串。 Azure ML Studio 在内部将这些值转换为 DateTimes,似乎再多的争论也无法说服它实际上是字符串。
这是一个问题,因为在转换过程中值会失去精度并开始显示为重复项,而实际上它们是唯一的。有人知道 ML Studio 是否可以配置为在导入数据集时不推断列的数据类型?
现在,为了更长的(呃)故事:)
我在这里使用公共数据集 - 特别是 Kaggle’s New York City Fare Prediction 竞赛。我想看看我是否可以使用 Azure ML Studio 做一个快速而简单的解决方案,但是数据集的唯一键值是以下形式
2015-01-27 13:08:24.0000003
2015-01-27 13:08:24.0000002
2011-10-06 12:10:20.0000001
等等。
在我的实验中导入它们时,键值会转换为 DateTime,使它们不再唯一,即使它们在 csv 中是唯一的。不用说,这会阻止我向 Kaggle 提交任何解决方案,因为我无法唯一识别行:)。
我尝试了以下方法:
在加载数据集后编辑数据集的元数据并将列的数据类型设置为字符串,但这并没有起到太大作用,因为精度已经丢失 从 Azure blob 导入数据集,将其转换为 csv,然后将其加载到 Jupyter/Python 中 - 这为我带来了相同的(重复的)密钥。 按预期使用 pandas 在本地加载数据集。我已经用 5.5GB 的 train
大数据集和更易于管理的 sample_submission
数据集重现了这种行为。
很想知道是否有某种解决方法可以告诉 ML Studio 在加载数据集时不要尝试转换此列。我在这里专门寻找仅限 Azure ML Studio 的解决方案,因为我不想对数据集进行任何预处理。
【问题讨论】:
【参考方案1】:我已经尝试过使用示例数据,这是我快速而肮脏的解决方案: 1)在每个日期前添加任何符号(我添加了“#”) 2) 将其加载到 AML Studio(现在被视为字符串功能) 3)添加一个Python/R组件,去掉'#'符号,并将列显式转换为字符串(as.string(columnname) or str(columnname))
希望对你有帮助
【讨论】:
谢谢,猜猜这是目前唯一的方法。正在寻找一个不包括任何预处理的解决方案(甚至不将文本字符添加到键值:)),我认为我们必须等待一段时间才能实现。以上是关于如何防止 Azure ML Studio 在导入数据集时将特征列转换为 DateTime的主要内容,如果未能解决你的问题,请参考以下文章
Azure ML Studio ML Pipeline - 异常:未找到临时文件
Azure ML Studio 执行 Python 脚本错误 - 没有名为“azure.cognitiveservices”的模块