如何将数据分成3个集合(训练、验证和测试)?

我有一个pandas数据框,我想将其分成3个独立的集合。我知道可以使用来自sklearn.cross_validationtrain_test_split将数据分成两个集合(训练和测试)。然而,我找不到任何关于将数据分成三个集合的解决方案。最好,我希望能得到原始数据的索引。

我知道一个变通方法是使用train_test_split两次,并以某种方式调整索引。但是,有没有更标准的/内置的方法可以将数据分成3个集合而不是2个呢?


回答:

Numpy解决方案。我们将首先打乱整个数据集(df.sample(frac=1, random_state=42)),然后将我们的数据集分成以下部分:

  • 60% – 训练集,
  • 20% – 验证集,
  • 20% – 测试集

In [305]: train, validate, test = \              np.split(df.sample(frac=1, random_state=42),                        [int(.6*len(df)), int(.8*len(df))])In [306]: trainOut[306]:          A         B         C         D         E0  0.046919  0.792216  0.206294  0.440346  0.0389602  0.301010  0.625697  0.604724  0.936968  0.8700641  0.642237  0.690403  0.813658  0.525379  0.3960539  0.488484  0.389640  0.599637  0.122919  0.1065058  0.842717  0.793315  0.554084  0.100361  0.3674657  0.185214  0.603661  0.217677  0.281780  0.938540In [307]: validateOut[307]:          A         B         C         D         E5  0.806176  0.008896  0.362878  0.058903  0.0263286  0.145777  0.485765  0.589272  0.806329  0.703479In [308]: testOut[308]:          A         B         C         D         E4  0.521640  0.332210  0.370177  0.859169  0.4010873  0.333348  0.964011  0.083498  0.670386  0.169619

[int(.6*len(df)), int(.8*len(df))] – 是numpy.split()indices_or_sections数组。

这里是一个关于np.split()使用的小演示 – 让我们将一个包含20个元素的数组分成以下部分:80%,10%,10%:

In [45]: a = np.arange(1, 21)In [46]: aOut[46]: array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])In [47]: np.split(a, [int(.8 * len(a)), int(.9 * len(a))])Out[47]:[array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16]), array([17, 18]), array([19, 20])]

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注