【发布时间】:2019-01-27 19:31:12
【问题描述】:
我刚刚看到了这个answer on SO,它展示了如何使用 numpy 拆分数据。
假设我们要将它们拆分为0.8、0.1、0.1,分别用于训练、测试和验证,您可以这样操作:
train, test, val = np.split(df, [int(.8 * len(df)), int(.9 * len(df))])
我很想知道在使用这种方法拆分数据时如何考虑分层。
分层是拆分数据,同时保留数据中每个类别的先验。也就是说,如果您打算将
0.8用于训练集,则从您拥有的每个课程中获取 0.8。测试和训练也一样。
我尝试使用以下方法首先按类对数据进行分组:
grouped_df = df.groupby(class_col_name, group_keys=False)
但它没有显示正确的结果。
注意:我熟悉train_test_split
【问题讨论】:
-
看来你需要[分层抽样][1] [1]:en.wikipedia.org/wiki/Stratified_sampling
-
是的。然而,问题是我们如何使用上述方法来实现它。
标签: python python-3.x pandas numpy pandas-groupby