2017-08-08 4 views
-1
pipe = Pipeline([('reduce_dim', LinearDiscriminantAnalysis()),('classify', LogisticRegression())]) 
param_grid = [{'classify__penalty': ['l1', 'l2'], 
       'classify__C': [0.05,0.1, 0.3, 0.6, 0.8, 1.0]}] 

gs = GridSearchCV(pipe, param_grid=param_grid, cv=5, scoring='roc_auc', n_jobs=3) 
gs.fit(data, label) 

J'ai une question pour l'utilisation de pipeline et gridsearchcv. maintenant je commence d'abord à utiliser lda pour réduire la dimension, je veux connaître le processus de gridsearchcv avec pipeline? split train/test-> lda-> ajustement & prédire ou lda-> split train/test-> ajustement & prédire?sklearn lda gridsearchcv avec pipeline

+0

La première option est viable pour un scénario réel. Parce que dans la seconde, le LDA aura des fuites d'informations à partir des données de test. Quoi qu'il en soit, cette question est moins sur la programmation et plus sur la méthodologie et donc approprié pour [Cross-validated] (https://stats.stackexchange.com) –

+0

Après le commentaire de @sera, je veux aussi être clair si vous voulez le dans lequel fonctionne gridSearchCV, ou voulez-vous savoir quel ordre est le plus adapté à la tâche. –

Répondre

0

Partie 1

Tout d'abord, le Pipeline définit les étapes que vous allez faire. Dans votre cas, utilisez d'abord LinearDiscriminantAnalysis puis LogisticRegression.

Partie 2

Dans

gs = GridSearchCV(pipe, param_grid=param_grid, cv=5, scoring='roc_auc', n_jobs=3) 

vous avez défini la validation croisée (cv) = 5.

Ce numéro définit le nombre de plis ((stratifié) KFold) Ainsi, vous divisez automatiquement vos données 5 fois en train et tester les données et chaque fois que vous effectuez l'analyse que Pipeline définit.

Ligne de fond: le premier cas (split train/test-> lda-> ajustement & prédire) semble mieux mais la question est liée à la méthodologie.