【发布时间】:2017-03-12 22:55:57
【问题描述】:
我有一个pd.DataFrame,其结构与下面的示例类似:
index x y z
0 x0 y0 None
1 x1 y1 None
2 x2 y2 None
3 x3 y3 None
4 x4 y4 None
5 x5 y5 None
6 x6 y6 None
我的目标是创建 DataFrame 的 3 个子集:
-
Group1是一个训练集,可用于训练模型以预测 x 和 y 的模型; Group2是一个验证集,用于评估Group1中训练的模型(或不同模型/参数调优)的准确性,我会填写正确的z 对于Group1和2。Group3一直保持,直到选择一个模型来预测 z。
在这种情况下,最有效的分配方式是什么?我正在考虑在一个 DataFrame 中简单地创建子组,如下所示:
index x y z group
- - - - - - - - - - - - - - - - - - - -
0 x0 y0 None training
1 x1 y1 None validation
2 x2 y2 None held out
3 x3 y3 None held out
4 x4 y4 None validation
5 x5 y5 None training
6 x6 y6 None held out
但是我看到的随机分配技巧elsewhere 通常会创建一个新的DataFrame。是因为这样更可行吗?
rows = np.random.choice(df.index.values, 10)
sampled_df = df.ix[rows]
另外,由于我想一次采样 3 组而不是 2 组,我不确定在不更换的情况下进行采样的最佳方法是什么。
【问题讨论】:
-
这里有一个类似的问题stackoverflow.com/q/38250710/2285236
-
@ayhan 谢谢!这很有帮助