如何将数据分为3部分,其中之一将不被使用?

时间:2018-09-02 05:48:22

标签: scikit-learn

我有一个csv,我想将80%分配给培训,将10%分配给dev-test,将10%分配给测试集。开发测试将不再使用。

我已经将其设置为:

import sklearn
import csv
with open('Letter.csv') as f:
   reader = csv.reader(f)
   annotated_data = [r for r in reader]

并用于拆分:

import random  
random.seed(1234)  
random.shuffle(annotated_data)

但是我见过的所有分割仅分成2组,并且我看不到在哪里指定分割多少分割区,例如,我想要80%的训练。也许我是盲人,但是有人可以帮助我吗?我不知道怎么用熊猫。

我将其拆分后,又如何分别访问这些集?例如,我可以读取每个记录作为一个整体并计算条目的数量,但是一旦我将其拆分,我想计算每个记录集中有多少条记录。抱歉,如果这当之无愧,但我不想发送垃圾邮件。

2 个答案:

答案 0 :(得分:0)

否,在scikit-learn中有可能直接分成三组。 典型的方法是在80/20中两次拆分两次,然后将20%的50/50拆分。您要检查train_test_split功能。

本质上,包含数据Xy的代码如下所示:

import numpy as np
from sklearn.model_selection import train_test_split
X, y = np.arange(100).reshape((5, 2)), range(5)

X_train, X_tmp, y_train, y_tmp = train_test_split(X, y, test_size=0.2)
X_dev, X_test, y_dev, y_test = train_test_split(X_tmp, y_tmp, test_size=0.5)

现在,您想使用(X_train, y_train)(X_dev, y_dev)(X_test, y_test)

答案 1 :(得分:0)

您可以两次使用train_test_split

  1. 将数据拆分为0.8:0.2的比例
  2. 将较小的集合分成0.5:0.5的比例