【发布时间】:2017-08-29 06:37:59
【问题描述】:
我有一组(2000 个)行,每行有很多元素。一行中的一个元素是一个字符串(“名称”),每组 5 行是通用的(唯一名称的总数为 500)。 我希望具有相同“名称”的行最终位于同一个存储桶中。所以函数应该总是为给定的输入返回相同的值。
我想将它用于 k 折交叉验证,因此我需要创建 k 个存储桶,其元素数量尽可能均匀分布,+/- 少数元素可以,但超过 10% 则不行。
对于 k = 10,我应该有 10 个桶,每个桶有 200 个元素,190 或 210 可以,但 250 和 180 不行。我尝试了this answer,但它并没有给我一个非常统一的结果。这可能是由于数据集本身造成的,但如果每个桶的元素数量达到一定的平衡,那就太好了。 K 通常是 5 或 10。
一个例子:
姓名1,日期1_1,位置1_1,号码1_1
名称1,日期1_2,位置1_2,编号1_2 ...
姓名1,日期1_5,位置1_5,号码1_5
name2、date2_1、location2_1、number2_1 ...
name2、date2_5、location2_5、number2_5 ...
name400、date400_1、location400_1、number400_1 ...
name400、date400_5、location400_5、number400_5
输出示例:
i,name1, date1_1, location1_1, number1_1
i,name1, date1_2, location1_2, number1_2 ...
i,name1, date1_5, location1_5, number1_5
j,name2, date2_1, location2_1, number2_1 ...
j,name2, date2_5, location2_5, number2_5 ...
k,name400, date400_1, location400_1, number400_1 ...
k,name400, date400_5, location400_5, number400_5
其中 1
【问题讨论】:
-
那你有400个名字吗?
-
问题很不清楚。预期的结果是什么,数据是什么样的,为什么您不能将它干净地划分为 1-20、21-40 广告。纳苏厄姆?也请提供示例
-
是否可以将某个值 K 设置为 0,将第一组名称添加到 K=0,然后将 K 迭代为 1 .....直到 K = 5/10 然后循环回到K=0?我假设这是针对您提到的交叉验证的某些 ML 项目,所以您需要设计某种形式的随机抽样吗?
-
我加了一个例子,谢谢你的建议。是的,分区是一种选择,但我不想假设数据集已经排序。