我有两个不同的文件。z_df 和 s_df。他们的第一列是相同的(它是时间点)。每一行都是一个唯一的时间实例。现在我想分别在 z_df 和 s_df 上构建一个分类器。那也行。但问题是我想为他们的训练和测试集使用相同的索引。例如,如果选择 z_df 的前 4 行进行训练,那么也必须选择 s_df 的前 4 行。 z_df.shape, s_df.shape: ((450865, 5), (450865, 930)) train_df, test_df = train_test_split(z_df, test_size=TEST_SIZE, shuffle=True ) train_df.shape: (315605, 5) m=train_df[0].tolist() len(m), train_df.shape: (315605, (315605, 5)) s_train=s_df[s_df[0].isin(m)] s_train.shape, train_df.shape: ((362774, 930), (315605, 5))如您所见,s_train 的行数与 train_df 的行数不同。为什么??我用第一列来称呼他们。为什么会这样?我究竟做错了什么?
1 回答
明月笑刀无情
TA贡献1828条经验 获得超4个赞
这很可能是因为您s_df[0]包含重复项。这可以通过 来确认len(s_df[0]) == len(s_df[0].unique())。
要对两个数据集进行采样:
is_train = np.random.choice((True, False), size=len(s_df), p=(0.7, 0.3))
s_train, z_train = s_df[is_train], z_df[is_train]
s_test, z_test = s_df[~is_train], z_df[~is_train]
添加回答
举报
0/150
提交
取消