支持的数据集格式
本页列出了支持的数据集格式及其潜在的限制。
在 YDF 中,传递数据集有两种方式:
- Python 数据集对象,例如 Pandas DataFrame。
- 类型化路径,例如 "csv:/path/to/dataset"。
使用 Python 对象数据集提供了灵活性,因为您可以轻松地对数据应用预处理操作。然而,对于大型数据集,它们的效率较低,因为整个数据集需要加载到内存中。通常情况下,Python 对象数据集最适合少于 1 亿个样本的数据集。
另一方面,类型化路径更节省内存,并且是分布式训练所必需的。然而,它们的灵活性较低(预处理需要物化输出),并且对某些格式和特征语义的支持有限。
推荐提供 Python 数据集的方式是使用 NumPy 数组的字典。Pandas DataFrame 也得到了很好的支持。当前推荐使用类型化路径数据集的方式是使用 TensorFlow Records,但这在未来可能会改变。
格式 | 可用性 | 作为 Python 对象 | 类型化路径前缀 | 备注 |
---|---|---|---|---|
NumPy 数组字典 | 公开 | 原生 | 高效;推荐用于小型数据集 | |
Pandas DataFrame | 公开 | 原生 | ||
csv | 公开 | csv: | 不支持多维特征。 | |
TensorFlow Records (gzip) | 公开 | 使用 ydf.util.read_tf_recordio | tfrecord: | 高效;推荐用于大型数据集 |
TensorFlow Records (非压缩) | 公开 | 使用 ydf.util.read_tf_recordio | tfrecordv2: | 低效;应避免 |
TensorFlow Tensor | 公开 | 原生 | 低效;应避免 | |
TensorFlow Dataset | 公开 | 原生 | 低效;应避免 | |
Xarray | 公开 | 原生 | ||
TF Examples 的 SSTable | 内部 | sstable+tfe: | ||
TF Examples 的 RecordIO | 内部 | recordio+tfe: | 高效;推荐用于大型数据集 | |
YDF Examples 的 RecordIO | 内部 | recordio+ygge: | 非常高效;适用于高级用户 | |
Capacitor | 内部 | capacitor: | 非常高效;不支持多维特征。 |