Angenommen, ich möchte mit einem LinearSVC eine k-fache Kreuzvalidierung für ein Dataset durchführen. Wie würde ich die Daten standardisieren?Wie standardisiert man Daten mit sklearns cross_val_score()
Die beste Vorgehensweise, die ich gelesen habe, besteht darin, Ihr Standardisierungsmodell auf Ihren Trainingsdaten aufzubauen und dieses Modell dann auf die Testdaten anzuwenden.
Wenn man ein einfaches train_test_split() verwendet, das ist einfach, wie wir können einfach tun:
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)
clf = svm.LinearSVC()
scalar = StandardScaler()
X_train = scalar.fit_transform(X_train)
X_test = scalar.transform(X_test)
clf.fit(X_train, y_train)
predicted = clf.predict(X_test)
Wie würde man gehen über die Daten zu standardisieren, während tun k-fach-Kreuzvalidierung? Das Problem kommt von der Tatsache, dass jeder Datenpunkt für Training/Tests ist, so dass Sie vor cross_val_score() nicht alles standardisieren können. Brauchen Sie keine andere Standardisierung für jede Kreuzvalidierung?
Die Dokumentation erwähnt nicht die Standardisierung innerhalb der Funktion. Bin ich SOL?
EDIT: Dieser Beitrag ist super hilfreich: Python - What is exactly sklearn.pipeline.Pipeline?