126 votes

Comment diviser/partitionner un ensemble de données en ensembles de données de formation et de test pour, par exemple, la validation croisée ?

Quelle est la bonne façon de diviser un tableau NumPy de façon aléatoire en deux ensembles de données : formation et test/validation ? Quelque chose de similaire à la méthode cvpartition o crossvalind dans Matlab.

0voto

B.Mr.W. Points 8215

Il est probable que vous devrez non seulement séparer les données d'entraînement et de test, mais aussi procéder à une validation croisée pour vous assurer que votre modèle se généralise. Ici, je suppose 70% de données de formation, 20% de validation et 10% de données d'attente/de test.

Consultez le np.split :

Si indices_ou_sections est un tableau 1-D d'entiers triés, les entrées indiquent où le tableau est divisé le long de l'axe. indiquent où le tableau est divisé le long de l'axe. Par exemple, [2, 3] donnerait, pour axe=0, le résultat suivant

ary[:2] ary[2:3] ary[3 :]

t, v, h = np.split(df.sample(frac=1, random_state=1), [int(0.7*len(df)), int(0.9*len(df))])

0voto

Hamed Ahangari Points 1

Je suis conscient que ma solution n'est pas la meilleure, mais elle s'avère pratique lorsque vous souhaitez diviser des données de manière simpliste, notamment lorsque vous enseignez la science des données à des débutants !

def simple_split(descriptors, targets):
    testX_indices = [i for i in range(descriptors.shape[0]) if i % 4 == 0]
    validX_indices = [i for i in range(descriptors.shape[0]) if i % 4 == 1]
    trainX_indices = [i for i in range(descriptors.shape[0]) if i % 4 >= 2]

    TrainX = descriptors[trainX_indices, :]
    ValidX = descriptors[validX_indices, :]
    TestX = descriptors[testX_indices, :]

    TrainY = targets[trainX_indices]
    ValidY = targets[validX_indices]
    TestY = targets[testX_indices]

    return TrainX, ValidX, TestX, TrainY, ValidY, TestY

Selon ce code, les données seront divisées en trois parties - 1/4 pour la partie test, un autre 1/4 pour la partie validation, et 2/4 pour l'ensemble d'entraînement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X