Menu
CoddyTech

K-Fold-Validierung

Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 37 von 58.

Dieses Kapitel macht deine Bewertungen verlässlich. Am Ende wirst du ein Modell mit Diagrammen wie diesem abstimmen:

Balken der mittleren Genauigkeit über 5 Folds für k von 1 bis 41. Die Balken steigen von 0,85 bei k = 1 auf einen hervorgehobenen Bestwert von 0,91 bei k = 15 und fallen dann ab

Eine einzelne Testaufteilung kann Glück haben. K-fache Kreuzvalidierung teilt die Zeilen in Faltungen auf, hier 5, und testet nacheinander mit jeder Faltung, während mit den übrigen trainiert wird:

Fünf Zeilen mit jeweils fünf Zellen. Bei jeder Aufteilung ist eine Zelle, jedes Mal eine andere, die Testfaltung; mit den anderen vier wird trainiert. Daneben die Ergebnisse des Iris-Baums: 0.967, 0.967, 0.900, 0.967, 1.000

Ein Aufruf führt alle fünf aus, hier für einen Baum auf den Irisblüten:

from sklearn.model_selection import cross_val_score

tree = DecisionTreeClassifier(random_state=0)
scores = cross_val_score(tree, X, y, cv=5)
print(np.round(scores, 3))
print(f"{scores.mean():.3f} {scores.std():.3f}")

Dies gibt Folgendes aus:

[0.967 0.967 0.9   0.967 1.   ]
0.960 0.033

Gib den Mittelwert als Wertung und die Standardabweichung als Maß dafür an, wie stark sie schwankt.

challenge icon

Aufgabe

Mittel

Eine Kombucha-Brauerei sagt verdorbene Chargen anhand von 5 Laborwerten voraus. Wie stabil ist ihr Modell? Das Programm liest die Anzahl der Folds ein; der Startcode erstellt die Daten und das Modell.

  1. Führe eine Kreuzvalidierung des Modells mit dieser Anzahl an Folds durch.
  2. Gib die Genauigkeit jedes Folds und anschließend den Mittelwert und die Standardabweichung aus, jeweils auf 3 Dezimalstellen.
  3. Gib die Nummer des schwächsten Folds aus, beginnend bei 1.

Für andere Chargen und 4:

Fold 1: 0.917
Fold 2: 0.933
Fold 3: 0.883
Fold 4: 0.917
Mean 0.912, std 0.018
Weakest fold: 3

Probier es selbst

import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression

n_folds = int(input())

# Ändere die folgenden Zeilen nicht: 240 Kombucha-Chargen mit jeweils 5 Labormesswerten; Label 1 bedeutet verdorben
X, y = make_classification(n_samples=240, n_features=5, n_informative=3, n_redundant=0,
                           flip_y=0.08, class_sep=0.9, random_state=2)
model = LogisticRegression(max_iter=1000)

# Schreibe deinen Code darunter
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Überwachtes Lernen

Übe selbstständig: Online-Python-Compiler