2017-11-19 3 views
1

Ich habe eine benutzerdefinierte Pipeline und ich verwende GridSearchCV von Sklearn, um die Parameter für die gesamte Pipeline abzustimmen. Ich habe die beste Parameterkombination mit dem Sklearn, aber ich möchte die beste Parameterkombination erhalten und an eine andere Pipeline übergeben.Wie die besten Parameter (mit GridSearchCV) von einer Pipeline zu einer anderen Pipeline weitergeleitet werden

Hier ist die Pipeline,

p = Pipeline([ 
    ('union', FeatureUnion(
     transformer_list=[ 
      ('chargram', Pipeline([ 
       ('tfidf', TfidfVectorizer(token_pattern=r'\w')), 
       ('kbest', SelectPercentile(score_func=chi2)), 
      ])), 
      ('custom', Pipeline([ 
       ('features', CustomFeatures()), 
       ('tfidf', TfidfVectorizer()), 
       ('kbest', SelectPercentile(score_func=chi2)), 
      ])) 
     ], 
     # weight components in FeatureUnion. Can be tuned 
     transformer_weights={ 
      'chargram': 0.8, 
      'custom': 0.8 
     }, 
     n_jobs=-1 
    )), 

    # Classifier stage  
    (('clf', clf)), 
]) 

in dieser Pipeline Also, ich für den Klassifikator erhalte die Parameterkombination auch, aber alles, was ich tun möchte, ist den Parameter für featureunion Schritt zu gelangen und diese zu dem Pass pipeline und verwenden Sie einen anderen Satz von Classifier-Parametern, um an die functionunion zu gelangen - beides kombiniert.

Gibt es eine Möglichkeit, das zu tun?

+0

Während Sie es haben, warum möchten Sie es bekommen? Du hast es schon. –

+0

Ich habe mehrere Machine Learning-Modelle zu tun, und ich möchte nicht die Features immer wieder tunen und verwenden Sie die gleiche Konfiguration, die ich auf dem ersten Klassifikator testen. – nEO

Antwort

0

Sie können parameters` Werte in Variablen wie folgt speichern:

transformer_list = [ 
    ('chargram', Pipeline([ 
     ('tfidf', TfidfVectorizer(token_pattern=r'\w')), 
     ('kbest', SelectPercentile(score_func=chi2)), 
    ])), 
    ('custom', Pipeline([ 
     ('features', CustomFeatures()), 
     ('tfidf', TfidfVectorizer()), 
     ('kbest', SelectPercentile(score_func=chi2)), 
    ])) 
] 

transformer_weights = { 
    'chargram': 0.8, 
    'custom': 0.8 
} 

p = Pipeline([ 
    ('union', FeatureUnion(
     transformer_list=transformer_list, 
     # weight components in FeatureUnion. Can be tuned 
     transformer_weights=transformer_weights, 
     n_jobs=-1 
    )), 

    # Classifier stage 
    (('clf', clf)), 
]) 

P. S: Ich weiß nicht, ob ich Sie verstanden!

+0

hey, danke. Ich habe in den gleichen Zeilen eine Lösung gefunden, Sie können die Schritte verwenden, um die Parameter aus dem Schritt zu erhalten. Zum Beispiel war die Schritte [0] in meinem Code das, was ich gesucht habe, und ich habe das für das Modellieren der anderen Klassifikatoren verwendet. Danke für die Hilfe! – nEO

Verwandte Themen