Het Model Evalueren
Bij het bouwen van een model voor voorspellingen is het essentieel om te begrijpen hoe goed het model presteert voordat er daadwerkelijke voorspellingen worden gedaan.
Het evalueren van een model houdt in dat de prestaties bij het maken van voorspellingen worden beoordeeld. Daarom is de .score()
-methode belangrijk.
Het evalueren van het model met behulp van de trainingsset kan echter onbetrouwbare resultaten opleveren, omdat een model waarschijnlijk beter presteert op data waarop het getraind is dan op nieuwe, ongeziene data. Het is daarom cruciaal om het model te evalueren op data die het nog nooit heeft gezien om de prestaties echt te begrijpen.
In meer formele termen willen we een model dat goed generaliseert.
Dit kunnen we doen door de data willekeurig te splitsen in een trainingsset en een testset.
Nu kunnen we het model trainen op de trainingsset en de prestaties evalueren op de testset.
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
Om de gegevens willekeurig te splitsen, kunnen we de functie train_test_split()
uit de module sklearn.model_selection
gebruiken.
Typisch gebruiken we voor een testset 25-40% van de gegevens bij een kleine dataset, 10-30% bij een middelgrote dataset en minder dan 10% bij grote datasets.
In ons voorbeeld, met slechts 342 instanties — geclassificeerd als een kleine dataset — wijzen we 33% van de gegevens toe aan de testset.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
We verwijzen naar de trainingset als X_train
en y_train
, en naar de testset als X_test
en y_test
.
123456789101112131415import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
Merk op dat we nu de trainingsset gebruiken in .fit(X_train, y_train)
en de testset in .score(X_test, y_test)
.
Aangezien train_test_split()
de dataset willekeurig splitst, zijn de train- en testsets elke keer dat je de code uitvoert verschillend. Je kunt dit meerdere keren uitvoeren en zien dat de scores variëren. Deze scores zouden stabieler worden als de omvang van de dataset toeneemt.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 3.13
Het Model Evalueren
Veeg om het menu te tonen
Bij het bouwen van een model voor voorspellingen is het essentieel om te begrijpen hoe goed het model presteert voordat er daadwerkelijke voorspellingen worden gedaan.
Het evalueren van een model houdt in dat de prestaties bij het maken van voorspellingen worden beoordeeld. Daarom is de .score()
-methode belangrijk.
Het evalueren van het model met behulp van de trainingsset kan echter onbetrouwbare resultaten opleveren, omdat een model waarschijnlijk beter presteert op data waarop het getraind is dan op nieuwe, ongeziene data. Het is daarom cruciaal om het model te evalueren op data die het nog nooit heeft gezien om de prestaties echt te begrijpen.
In meer formele termen willen we een model dat goed generaliseert.
Dit kunnen we doen door de data willekeurig te splitsen in een trainingsset en een testset.
Nu kunnen we het model trainen op de trainingsset en de prestaties evalueren op de testset.
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
Om de gegevens willekeurig te splitsen, kunnen we de functie train_test_split()
uit de module sklearn.model_selection
gebruiken.
Typisch gebruiken we voor een testset 25-40% van de gegevens bij een kleine dataset, 10-30% bij een middelgrote dataset en minder dan 10% bij grote datasets.
In ons voorbeeld, met slechts 342 instanties — geclassificeerd als een kleine dataset — wijzen we 33% van de gegevens toe aan de testset.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
We verwijzen naar de trainingset als X_train
en y_train
, en naar de testset als X_test
en y_test
.
123456789101112131415import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
Merk op dat we nu de trainingsset gebruiken in .fit(X_train, y_train)
en de testset in .score(X_test, y_test)
.
Aangezien train_test_split()
de dataset willekeurig splitst, zijn de train- en testsets elke keer dat je de code uitvoert verschillend. Je kunt dit meerdere keren uitvoeren en zien dat de scores variëren. Deze scores zouden stabieler worden als de omvang van de dataset toeneemt.
Bedankt voor je feedback!