Het 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.
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.
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))
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.
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 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.
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.
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))
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.
Bedankt voor je feedback!