J'ai un ensemble de données dont je ne connais pas le nombre d'enregistrements. Je veux implémenter la validation croisée manuellement, faire une histoire courte Je veux diviser mes données en 10 plis et enregistrer chaque pli dans un tableau ou une liste. que devrais-je faire? J'apprécie toute aide.

0
Samaneh Rezaei 14 août 2017 à 19:37

2 réponses

Meilleure réponse

Vous pouvez utiliser quelque chose comme ceci:

length = int(len(data)/10) #length of each fold
folds = []
for i in range(9):
    folds += [data[i*length:(i+1)*length]]
folds += [data[9*length:len(data)]]

Pour obtenir une liste de listes contenant 1 / 10e du tableau ou de la liste, la dernière contenant le reste.

3
Milán Vásárhelyi 14 août 2017 à 16:54

En supposant que votre ensemble de données est un tableau numpy data_set, où les colonnes sont les fonctionnalités d'entraînement et les lignes num_rows sont les différentes instances d'entraînement (exemples), vous pouvez utiliser:

import numpy as np

N_folds = 10
# Determine the correct indices to split the data.
limits = np.linspace(0, num_rows+1, N_fold+1, dtype=int)

for i in range(len(limits) - 1):
    # Split the data at the correct indices and save it.
    np.save('arr_{}.npy'.format(i), data_set[limits[i] : limits[i+1]])
1
ml4294 14 août 2017 à 18:31