Leercurves bouwen
Als je heel veel waarden voor één hyperparameter wilt testen, is dat lastig overzichtelijk te maken in een DataFrame. Eerder leerde je een handige truc om dit te analyseren. Een grafiek die een 'leercurve' heet, laat mooi zien wat het effect is van het verhogen of verlagen van een specifieke hyperparameter op het eindresultaat.
In plaats van slechts een paar waarden voor de learning rate te testen, ga je er nu veel testen zodat je het effect van deze hyperparameter over een groot bereik kunt zien. Een handige NumPy-functie is np.linspace(start, end, num), waarmee je een aantal waarden (num) kunt maken die gelijkmatig verdeeld zijn binnen een interval (start, end) dat je opgeeft.
Je hebt de gegevenssets X_train, X_test, y_train en y_test beschikbaar.
Deze oefening maakt deel uit van de cursus
Hyperparameter Tuning in Python
Oefeninstructies
- Maak een lijst van 30 learning rates die gelijkmatig verdeeld zijn tussen 0,01 en 2.
- Maak een vergelijkbare lus als in de vorige oefening, maar sla alleen de accuracy-scores op in een lijst.
- Plot de learning rates tegen de accuracy-score.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Set the learning rates & accuracies list
learn_rates = np.linspace(____, ____, num=____)
accuracies = []
# Create the for loop
for learn_rate in learn_rates:
# Create the model, predictions & save the accuracies as before
model = GradientBoostingClassifier(learning_rate=____)
predictions = model.fit(____, ____).predict(____)
accuracies.append(accuracy_score(y_test, ____))
# Plot results
plt.plot(____, ____)
plt.gca().set(xlabel='learning_rate', ylabel='Accuracy', title='Accuracy for different learning_rates')
plt.____