Как разбить датасет на train, validation и test выборки, сохранив порядок записей?
Помогите отсортировать данные для нейроной сети. Нашел как сделать срез данных в интернете, вписал в свой код, работает, ниже пример. Но мне нужно, чтобы данные не хаотично отбирались. Первые 70 процентов в тренировочный датасет, 15 в валидационый, и последние 15 в тестовый.
p=0.8
trainDataset = dataset.sample(frac=p,random_state=0)
testDataset = dataset.drop(trainDataset.index)
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
воспользуйтесь np.split():
train, validate, test = np.split(df, [int(.7*len(df)), int(.85*len(df))])
пример:
In [25]: df = pd.DataFrame(np.random.randint(10, size=(100, 3)), columns=list("abc"))
In [26]: df
Out[26]:
a b c
0 1 1 9
1 2 8 8
2 9 4 7
3 7 2 6
4 4 5 9
.. .. .. ..
95 7 5 7
96 1 6 3
97 7 2 7
98 9 4 5
99 5 3 2
[100 rows x 3 columns]
In [27]: train, validate, test = np.split(df, [int(.7*len(df)), int(.85*len(df))])
In [28]: train.shape
Out[28]: (70, 3)
In [29]: validate.shape
Out[29]: (15, 3)
In [30]: test.shape
Out[30]: (15, 3)
