Verschachtelte Cross-Validation-Beispiel für Scikit-LearnPython

Python-Programme
Anonymous
 Verschachtelte Cross-Validation-Beispiel für Scikit-Learn

Post by Anonymous »

Ich versuche, meinen Kopf im Beispiel von verschachtelten und nicht Nestnestnern in Sklearn zu arbeiten. Ich habe mehrere Antworten überprüft, aber ich bin immer noch verwirrt mit dem Beispiel. Aus einem Datensatz X erstellt der äußere 10-faltes CV (für den Einfachheit halber n = 10) 10 Trainingssätze und 10 Testsätze:

Code: Select all

(Tr0, Te0),..., (Tr0, Te9)
Dann ist das innere 10-CV-Aufteils Jedes äußeres Training in 10 Training und 10 Testsätze:

Code: Select all

From Tr0: (Tr0_0,Te_0_0), ... , (Tr0_9,Te0_9)
From Tr9: (Tr9_0,Te_9_0), ... , (Tr9_9,Te9_9)
Jetzt finden wir mit dem inneren Lebenslauf die besten Werte von c für jeden einzelnen äußeren Trainingssatz. Dies geschieht durch Testen aller möglichen Werte von c mit dem inneren Lebenslauf. Der Wert, der die höchste Leistung (z. B. Genauigkeit) liefert, wird für diesen speziellen äußeren Trainingssatz ausgewählt. Nachdem wir die besten c -Werte für jeden äußeren Trainingssatz entdeckt haben, können wir eine unvoreingenommene Genauigkeit unter Verwendung der äußeren Testsätze berechnen. Bei diesem Verfahren werden die Proben, die verwendet werden, um den besten Parameter (d. H. c ) zu identifizieren, nicht zur Berechnung der Leistung des Klassifikators. Daher haben wir eine völlig unvoreingenommene Validierung.inner_cv = KFold(n_splits=4, shuffle=True, random_state=i)
outer_cv = KFold(n_splits=4, shuffle=True, random_state=i)

# Non_nested parameter search and scoring
clf = GridSearchCV(estimator=svm, param_grid=p_grid, cv=inner_cv)
clf.fit(X_iris, y_iris)
non_nested_scores = clf.best_score_

# Nested CV with parameter optimization
nested_score = cross_val_score(clf, X=X_iris, y=y_iris, cv=outer_cv)
nested_scores = nested_score.mean()
< /code>
Nach dem, was ich verstehe, berechnet der Code einfach die Bewertungen mit zwei verschiedenen Kreuzvalidationen (d. H. Verschiedene Spaltungen in das Training und den Testsatz). Beide verwendeten den gesamten Datensatz. Das gridcv identifiziert die besten Parameter mit einem (der beiden CVs), dann berechnet cross_val_score mit dem zweiten Lebenslauf die Leistung, wenn die besten Parameter verwendet werden. Was fehlt ich im Beispiel?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post