ray.data.Dataset.split_proportionately#

Dataset.split_proportionately(proportions: List[float]) List[MaterializedDataset][源代码]#

使用比例来实现数据集的物化和分割。

一个常见的用例是将数据集分割为训练集和测试集(相当于例如 scikit-learn 的 train_test_split)。对于更高层次的抽象,请参见 Dataset.train_test_split()

此方法分割数据集,以确保所有分割至少包含一行。如果无法做到这一点,则会引发异常。

这相当于手动计算索引并调用 Dataset.split_at_indices()

备注

此操作将触发对此数据集执行的延迟转换。

示例

>>> import ray
>>> ds = ray.data.range(10)
>>> d1, d2, d3 = ds.split_proportionately([0.2, 0.5])
>>> d1.take_batch()
{'id': array([0, 1])}
>>> d2.take_batch()
{'id': array([2, 3, 4, 5, 6])}
>>> d3.take_batch()
{'id': array([7, 8, 9])}

时间复杂度:O(分割次数)

参数:

proportions – 分割数据集的比例列表。必须总和小于1,并且每个比例必须大于0。

返回:

数据集的划分。

参见

Dataset.split()

split_proportionately() 不同,后者允许你将数据集分割成不同的大小,而 Dataset.split() 则将数据集分割成大致相等的份数。

Dataset.split_at_indices()

Dataset.split_proportionately() 在幕后使用了这种方法。

Dataset.streaming_split()

split() 不同,streaming_split() 不会在内存中具体化数据集。