Supposons que je souhaite utiliser un LinearSVC pour effectuer une validation croisée sur un jeu de données. Comment pourrais-je effectuer la standardisation sur les données? La meilleure pratique que j'ai lue est de construire votre modèle de normalisation sur vos données d'entraînement, puis d'appliquer ce modèle aux données de test.Comment standardiser les données avec sklearn cross_val_score()
Quand on utilise un simple train_test_split(), cela est facile que nous pouvons faire simplement:
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)
Comment peut-on aller sur la normalisation des données tout en faisant k fois-validation croisée? Le problème vient du fait que chaque point de données sera pour l'entrainement/test donc vous ne pouvez pas tout standardiser avant cross_val_score(). N'auriez-vous pas besoin d'une normalisation différente pour chaque validation croisée?
Les docs ne mentionnent pas la standardisation qui se passe en interne dans la fonction. Suis-je SOL?
EDIT: Ce poste est super utile: Python - What is exactly sklearn.pipeline.Pipeline?