2

我想将我的数据集分成两部分,75% 用于训练,25% 用于测试。有两个班。而且我有另一个数据集,它只有一个类的一个实例,其余所有实例都属于第二类。所以我不想随机分裂。我想确保,如果一个类只有一个实例,它应该在训练中。任何想法如何做到这一点。我知道我必须选择索引,但我不知道如何。现在,我正在这样做,选择前 75% 作为训练,剩下的作为测试

train_data = df[:int((len(df)+1)*.75)] 
test_data = df[int(len(df)*.75+1):] 
4

4 回答 4

2

这可能会有所帮助:GroupKFold。在那里找到 sklearn 文档:

http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GroupKFold.html

于 2018-03-30T08:48:11.907 回答
1

您正在寻找分层训练和测试拆分:sklearn.model_selection.StratifiedKFold.html

于 2018-04-03T13:59:13.770 回答
0

尝试这个:

train_data = df[:int(len(df) * .75)] test_data = df[int(len(df) * .75)::int(len(df) * .25) - 1]

在针对 10 个整数列表进行测试时,它对我有用。

于 2018-03-29T22:03:01.817 回答
0

您的数据集在输入方面是否会发生变化,还是会始终保持相同数量的数据?如果是后者,您可以简单地将总集合的 75% 的任何数字指定为 splice 方法的第二个参数。例如,如果您有 100 个项目,您将分配您的 train_data = df[0:75:] 和另一个 test_data = df[76:]。

但如果没有模型或缩短的脚本,我认为我不能做更多的事情。

于 2018-03-29T20:39:23.437 回答