Aan de slagGa gratis aan de slag

Data splitsen in trainings- en validatiesets

Je hebt geleerd dat alleen de trainingsdata gebruiken zonder een validatieset leidt tot een probleem genaamd overfitting. Bij overfitting presteert het model heel goed op de trainingsinputs, maar generaliseert het juist heel slecht naar onzichtbare data. Dat betekent dat het model niet erg bruikbaar is, omdat het niet kan generaliseren. Om dit te voorkomen kun je een validatieset gebruiken.

In deze oefening maak je een trainings- en validatieset van de gegevensset die je hebt (dus en_text met 1000 Engelse zinnen en fr_text met 1000 Franse zinnen). Je gebruikt 80% van de gegevensset als trainingsdata en 20% als validatiedata.

Deze oefening maakt deel uit van de cursus

Machine Translation met Keras

Cursus bekijken

Oefeninstructies

  • Definieer een reeks indexen met np.arange() die begint bij 0 en de grootte heeft van en_text.
  • Definieer valid_inds als de laatste valid_size indexen uit de reeks indexen.
  • Definieer tr_en en tf_fr, die de zinnen bevatten op de posities train_inds in de lijsten en_text en fr_text.
  • Definieer v_en en v_fr, die de zinnen bevatten op de posities valid_inds in de lijsten en_text en fr_text.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

train_size, valid_size = 800, 200
# Define a sequence of indices from 0 to len(en_text)
inds = ____.____(len(_____))
np.random.shuffle(inds)
train_inds = inds[:train_size]
# Define valid_inds: last valid_size indices
valid_inds = inds[____]
# Define tr_en (train EN sentences) and tr_fr (train FR sentences)
tr_en = [en_text[____] for ti in ____]
tr_fr = [____ for ti in ____]
# Define v_en (valid EN sentences) and v_fr (valid FR sentences)
v_en = [____ for vi in valid_inds]
v_fr = [____ for vi in ____]
print('Training (EN):\n', tr_en[:3], '\nTraining (FR):\n', tr_fr[:3])
print('\nValid (EN):\n', v_en[:3], '\nValid (FR):\n', v_fr[:3])
Code bewerken en uitvoeren