如何在导入数据集时防止Azure ML Studio将功能列转换为DateTime

时间:2018-08-10 06:47:20

标签: azure azure-machine-learning-studio kaggle ml-studio

尝试在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中-这给我带来了相同的(重复的)键。
  • 按预期在本地使用熊猫加载数据集。

我已经使用5.5GB的大型train数据集和更易于管理的sample_submission数据集重现了这种行为。

想知道是否存在某种变通办法来告诉ML Studio在加载数据集时不要尝试转换此列。我在这里专门针对仅适用于Azure ML Studio的解决方案,因为我不想对数据集进行任何预处理。

1 个答案:

答案 0 :(得分:3)

我已经尝试过与您一起采样数据,这是我快速而又肮脏的解决方案: 1)在每个日期之前添加任何符号(我已经添加了“#”) 2)将其加载到AML Studio(现在视为字符串功能) 3)添加一个Python / R组件以删除'#'符号,并将该列显式转换为字符串(as.string(columnname)或str(columnname))

希望这会有所帮助