拆分数据框以测试和训练数据集

时间:2017-09-29 21:09:21

标签: pandas split training-data

  

使用pandas创建两个数据框:train_df和test_df,其中   train_df有80%的数据是随机均匀选择的   替换

此处," 数据随机均匀选择,无需替换"意思?

另外,我该怎么做?

由于

1 个答案:

答案 0 :(得分:2)

"随机统一选择"意味着每一行都有相同的概率被选入80%

"无需更换"表示每行只考虑一次。一旦将其分配给培训或测试集,它就不是

例如,请考虑以下数据:

A            B

0            5
1            6
2            7
3            8
4            9

如果将此数据集拆分为80%的训练集和20%的测试集,那么我们最终会得到4行训练集(80%的数据)和1行的测试集(20%)数据)

无替换 假设第一行被分配给训练集。现在训练集是:

A            B

0            5

当下一行被分配到训练或测试时,将从剩余的行中选择:     A B

1            6
2            7
3            8
4            9

有替换 假设第一行被分配给训练集。现在训练集是:

A            B

0            5

但是下一行将使用整个数据集分配(即第一行已放回原始数据集中)

A            B

0            5
1            6
2            7
3            8
4            9

你怎么能这样做: 您可以使用scikit-learn:http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html

中的train_test_split函数

或者你可以使用pandas和Numpy来做到这一点:

df['random_number'] = np.random.randn(length_of_df)

train = df[df['random_number'] <= 0.8]
test = df[df['random_number'] > 0.8]