gpt4 book ai didi

python - 随机分割训练和测试数据

转载 作者:行者123 更新时间:2023-11-30 09:00:51 27 4
gpt4 key购买 nike

我有大约 3000 个对象,其中每个对象都有一个与其关联的计数。我想在训练和测试数据中随机划分这些对象,比例为 70%训练和测试各占 30%。但是,我想根据与每个对象关联的计数而不是根据对象的数量来划分它们。

举个例子,假设我的数据集包含 5 个对象。

Obj 1 => 200
Obj 2 => 30
Obj 3 => 40
Obj 4 => 20
Obj 5 => 110

如果我以接近 70%-30% 的比例分割它们,我的训练集应该是

Obj 2 => 30
Obj 3 => 40
Obj 4 => 20
Obj 5 => 110

我的测试集是

对象 1 => 200

如果我再次分割它们,我应该得到接近 70-30 分割比的不同训练和测试集。我知道上面的分割并没有给我纯粹的 70-30 分割,但只要接近它,就可以接受。

是否有任何预定义的方法/包可以在 Python 中执行此操作?

最佳答案

假设我正确理解你的问题,我的建议是:

from random import shuffle
sum = sum([obj.count for obj in obj_list]) #Get the total "count" of all the objects, O(n)
shuffle(obj_list)
running_sum = 0
i = 0
while running_sum < sum * .3
running_sum += obj_list[i].count
i += 1
training_data = obj_list[i:]
testing_data = obj_list[:i]

整个操作的时间复杂度为 O(n),您不会获得比这更好的时间复杂度。当然有办法将循环和诸如此类的东西压缩成一个衬里,但我不知道有任何内置函数可以用单个函数完成您所要求的任务,尤其是当您要求它在某种意义上是“随机”时每次分割时你都想要一个不同的训练/测试集(据我理解这个问题)

关于python - 随机分割训练和测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38614675/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com