我有一个熊猫数据框,我想把它分成3个独立的集合。我知道使用sklearn.cross\u validation中的train\u test\u分割,可以将数据分成两组(train和test)。但是,我找不到任何将数据分成三组的解决方案。最好,我想要原始数据的索引
我知道一个解决办法是使用train\u test\u split两次,并以某种方式调整索引。但是有没有更标准/内置的方法将数据分成3组而不是2组
Numpy解决方案。我们将首先洗牌整个数据集(df.sample(frac=1,random_state=42)),然后将数据集拆分为以下部分:
- 60%列车组
- 20%验证集
- 20%测试集
[305]on
:训练、验证、测试=\
np.分割(df.样本(分形=1,随机状态=42),
[int(.6*len(df)),int(.8*len(df))]
In[306]:火车
Output[306]:
A、B、C、D、E
0 0.046919 0.792216 0.206294 0.440346 0.038960
2 0.301010 0.625697 0.604724 0.936968 0.870064
1 0.642237 0.690403 0.813658 0.525379 0.396053
9 0.488484 0.389640 0.599637 0.122919 0.106505
8 0.842717 0.793315 0.554084 0.100361 0.367465
7 0.185214 0.603661 0.217677 0.281780 0.938540
At[307]on:验证
Output[307]:
A、B、C、D、E
5 0.806176 0.008896 0.362878 0.058903 0.026328
6 0.145777 0.485765 0.589272 0.806329 0.703479
In[308]:测试
Out[308]:
A、B、C、D、E
4 0.521640 0.332210 0.370177 0.859169 0.401087
3 0.333348 0.964011 0.083498 0.670386 0.169619
[int(.6*len(df)),int(.8*len(df))]-是一个用于numpy.split()的索引\u或\u节的数组
下面是np.split()用法的一个小演示-让我们将20个元素数组分成以下部分:80%、10%、10%:
[45]on
:a=np.arange(1,21)
At[46]on:a
Out[46]:数组([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])
At[47]on:np.split(a[int(.8*len(a)),int(.9*len(a)))
Output[47]:
[数组([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]),
数组([17,18]),
数组([19,20])]