我有一段代码,可以将大数据集转化为比例较小的数据集,我来解释一下:
假设你有20个蓝色弹珠和10个红色弹珠,如果我想用3个弹珠来表示这个数据,我会使用2个蓝色和1个红色。
我不介意结果不是完全准确的,例如用4个弹珠来表示17个蓝色和16个红色。最接近的比例表示方法是使用2个蓝色和2个红色,这样也可以。
以下是我的Python代码:
问题在于我说需要的样本数是20,但有时比例数据集会给出总数为21或19。我认为这是由于一些舍入误差导致的,但是否有更好的方法来解决这个问题呢?
正确工作的示例输出如下:
一个示例工作不正确的情况如下:
如果有人知道类似的方法也能做到这样,那就太好了。
假设你有20个蓝色弹珠和10个红色弹珠,如果我想用3个弹珠来表示这个数据,我会使用2个蓝色和1个红色。
我不介意结果不是完全准确的,例如用4个弹珠来表示17个蓝色和16个红色。最接近的比例表示方法是使用2个蓝色和2个红色,这样也可以。
以下是我的Python代码:
from random import randrange
data_set = [randrange(100, 1000) for x in range(5)]
required_amount = 20
special_number = required_amount / sum(data_set)
proportional_data_set = [round(x * special_number) for x in data_set]
print(data_set)
print(required_amount)
print(proportional_data_set)
print(sum(proportional_data_set))
问题在于我说需要的样本数是20,但有时比例数据集会给出总数为21或19。我认为这是由于一些舍入误差导致的,但是否有更好的方法来解决这个问题呢?
正确工作的示例输出如下:
[832, 325, 415, 385, 745]
20
[6, 2, 3, 3, 6]
20
一个示例工作不正确的情况如下:
[414, 918, 860, 978, 438]
20
[2, 5, 5, 5, 2]
19
如果有人知道类似的方法也能做到这样,那就太好了。