Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Hoofdstuk 30 — Supervised learning: classificatie (LogisticRegression, SVM, Decision Trees)

Let op: De tekst is in het Nederlands; alle Python codevoorbeelden zijn in het Engels.

Doelen:

  • Basis van classificatieproblemen, decision boundaries, probabilistische output.
  • Vergelijken van drie klassiekers: Logistic Regression, SVM en Decision Tree.
  • Evaluatie met accuracy, precision/recall/F1 en confusion matrix.

Installatie:

pip install scikit-learn numpy pandas matplotlib

30.1 Voorbeelddata en splitsing

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

X, y = load_breast_cancer(return_X_y=True, as_frame=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

30.2 Logistic Regression

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

logreg = Pipeline([
    ('scaler', StandardScaler()),
    ('clf', LogisticRegression(max_iter=2000))
])
logreg.fit(X_train, y_train)
print('LogReg accuracy:', logreg.score(X_test, y_test))

30.3 Support Vector Machine (SVM)

from sklearn.svm import SVC

svm = Pipeline([
    ('scaler', StandardScaler()),
    ('clf', SVC(kernel='rbf', probability=True, random_state=42))
]).fit(X_train, y_train)
print('SVM accuracy:', svm.score(X_test, y_test))

30.4 Decision Tree

from sklearn.tree import DecisionTreeClassifier

tree = DecisionTreeClassifier(max_depth=4, random_state=42)
tree.fit(X_train, y_train)
print('Tree accuracy:', tree.score(X_test, y_test))

30.5 Evaluatiemetrieken

from sklearn.metrics import classification_report, confusion_matrix

for name, model in [('LogReg', logreg), ('SVM', svm), ('Tree', tree)]:
    y_pred = model.predict(X_test)
    print(name)
    print(confusion_matrix(y_test, y_pred))
    print(classification_report(y_test, y_pred, digits=3))

30.6 Probabilities en ROC‑AUC

from sklearn.metrics import roc_auc_score, RocCurveDisplay
import matplotlib.pyplot as plt

y_prob = logreg.predict_proba(X_test)[:, 1]
auc = roc_auc_score(y_test, y_prob)
print('ROC‑AUC:', auc)
RocCurveDisplay.from_estimator(logreg, X_test, y_test)
plt.show()

30.7 Samenvatting

  • Logistic Regression: lineair, snel, goed baseline‑model.
  • SVM: krachtig met kernels, vaak sterke performance; let op schaal en hyperparameters.
  • Decision Trees: interpreteerbaar, weinig preprocessing nodig, maar kunnen overfitten.