Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Het Evalueren van het Model | Modelleren
ML-Introductie met Scikit-learn

bookHet Evalueren van het Model

Bij het bouwen van een voorspellend model is het essentieel om te bepalen hoe goed het presteert voordat het wordt gebruikt voor echte voorspellingen.

Modelbeoordeling meet hoe nauwkeurig het model voorspellingen doet. De .score()-methode biedt deze beoordeling.

Prestaties evalueren op de trainingsset is misleidend, omdat het model waarschijnlijk beter presteert op data die het al heeft gezien. Voor een realistische meting moet de evaluatie worden uitgevoerd op onbekende data.

Formeel is het doel om een model te creëren dat goed generaliseert.

Note
Definitie

Generalizatie is het vermogen van het model om effectief te presteren op nieuwe, onbekende data, buiten alleen de data waarop het is getraind. Het meet hoe nauwkeurig de voorspellingen van een model kunnen worden toegepast op praktijksituaties buiten de trainingsdataset.

Dit kan worden bereikt door de dataset willekeurig te splitsen in twee delen: een trainingsset voor het trainen van het model en een testset voor de evaluatie.

Train het model met behulp van de trainingsset en evalueer het vervolgens op de testset:

model.fit(X_train, y_train)
print(model.score(X_test, y_test))

Gebruik de functie train_test_split() uit de module sklearn.model_selection om een willekeurige splitsing van de data te maken.

De grootte van de testset hangt meestal af van de dataset: 25–40% voor kleine datasets, 10–30% voor middelgrote datasets en minder dan 10% voor grote datasets.

In dit voorbeeld, met slechts 342 instanties (een kleine dataset), wordt 33% toegewezen aan de testset:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

Hier vertegenwoordigen X_train en y_train de trainingsset, terwijl X_test en y_test de testset vertegenwoordigen.

123456789101112131415
import 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))
copy

Het model wordt nu getraind met de trainingset via .fit(X_train, y_train) en geëvalueerd met de testset via .score(X_test, y_test).

Omdat train_test_split() de data willekeurig splitst, verschillen de train- en testsets bij elke uitvoering, wat leidt tot variërende scores. Met een grotere dataset zouden deze scores stabieler worden.

question mark

Om een 67%/33% train-test split te bereiken, nemen we het eerste derde deel van de rijen als testset en de rest als trainingset. Is deze uitspraak correct?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 3.13

bookHet Evalueren van het Model

Veeg om het menu te tonen

Bij het bouwen van een voorspellend model is het essentieel om te bepalen hoe goed het presteert voordat het wordt gebruikt voor echte voorspellingen.

Modelbeoordeling meet hoe nauwkeurig het model voorspellingen doet. De .score()-methode biedt deze beoordeling.

Prestaties evalueren op de trainingsset is misleidend, omdat het model waarschijnlijk beter presteert op data die het al heeft gezien. Voor een realistische meting moet de evaluatie worden uitgevoerd op onbekende data.

Formeel is het doel om een model te creëren dat goed generaliseert.

Note
Definitie

Generalizatie is het vermogen van het model om effectief te presteren op nieuwe, onbekende data, buiten alleen de data waarop het is getraind. Het meet hoe nauwkeurig de voorspellingen van een model kunnen worden toegepast op praktijksituaties buiten de trainingsdataset.

Dit kan worden bereikt door de dataset willekeurig te splitsen in twee delen: een trainingsset voor het trainen van het model en een testset voor de evaluatie.

Train het model met behulp van de trainingsset en evalueer het vervolgens op de testset:

model.fit(X_train, y_train)
print(model.score(X_test, y_test))

Gebruik de functie train_test_split() uit de module sklearn.model_selection om een willekeurige splitsing van de data te maken.

De grootte van de testset hangt meestal af van de dataset: 25–40% voor kleine datasets, 10–30% voor middelgrote datasets en minder dan 10% voor grote datasets.

In dit voorbeeld, met slechts 342 instanties (een kleine dataset), wordt 33% toegewezen aan de testset:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

Hier vertegenwoordigen X_train en y_train de trainingsset, terwijl X_test en y_test de testset vertegenwoordigen.

123456789101112131415
import 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))
copy

Het model wordt nu getraind met de trainingset via .fit(X_train, y_train) en geëvalueerd met de testset via .score(X_test, y_test).

Omdat train_test_split() de data willekeurig splitst, verschillen de train- en testsets bij elke uitvoering, wat leidt tot variërende scores. Met een grotere dataset zouden deze scores stabieler worden.

question mark

Om een 67%/33% train-test split te bereiken, nemen we het eerste derde deel van de rijen als testset en de rest als trainingset. Is deze uitspraak correct?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 3
some-alt