2013-05-08 6 views
7

scikit-learnでネストされたパイプラインのパラメータを調整することは可能ですか?例:scikit-learnでGridSearchCVによってネストされたパイプラインのパラメータをチューニングする方法は?

svm = Pipeline([ 
    ('chi2', SelectKBest(chi2)), 
    ('cls', LinearSVC(class_weight='auto')) 
]) 

classifier = Pipeline([ 
    ('vectorizer', TfIdfVectorizer()), 
    ('ova_svm', OneVsRestClassifier(svm)) 
}) 

parameters = ? 

GridSearchCV(classifier, parameters) 

これを直接行うことができない場合は、回避策がありますか?

答えて

8

scikit-learnには、二重アンダースコア表記as exemplified hereがあります。これは、再帰的に動作し、基礎となる推定を明示的に__estimatorとして取り組まなければならないことを警告して、OneVsRestClassifierに拡張します。

parameters = {'ova_svm__estimator__cls__C': [1, 10, 100], 
       'ova_svm__estimator__chi2_k': [200, 500, 1000]} 
5

あなたは次のようにあなたが彼らのタグでパラメータのリストを取得することができます作成​​した推定のために。

import pprint as pp 

pp.pprint(sorted(classifier.get_params().keys())) 

[ 'ova_svm'、 'ova_svm__estimator'、 'ova_svm__estimator__chi2' 'ova_svm__estimator__chi2__k' 'ova_svm__estimator__chi2__score_func'、 'ova_svm__estimator__cls' 'ova_svm__estimator__cls__C' 'ova_svm__estimator__cls__class_weight' 'ova_svm__estimator__cls__dual' 、 'ova_svm__estimator__cls__fit_intercept'、 'ova_svm__estimator__cls__intercept_scaling'、 'ova_svm__estimator__cls__loss'、 'ova_svm__estimator__cls__max_iter'、 「ova_svm__estimator__c ls__multi_class'、 'ova_svm__estimator__cls__penalty'、 'ova_svm__estimator__cls__random_state'、 'ova_svm__estimator__cls__tol'、 'ova_svm__estimator__cls__verbose'、 'ova_svm__estimator__steps'、 'ova_svm__n_jobs'、 'ステップ'、 'ベクトラ'、 'vectorizer__analyzer'、 'vectorizer__binary'、 " vectorizer__decode_error ' 'vectorizer__dtype'、 'vectorizer__encoding'、 'vectorizer__input'、 'vectorizer__lowercase'、 'vectorizer__max_df'、 'vectorizer__max_features'、 'vectorizer__min_df'、 'vectorizer__ngram_range'、 'vectorizer__norm'、 'vectorizer__preprocessor'、' vectorizer__smooth_idf '、 ' vectorizer__stop_words '、' vectorizer__stripあなたは、あなたが上GridSearchCVをしたいパラメータを設定することができ、このリストから_accents'、 'vectorizer__sublinear_tf'、 'vectorizer__token_pattern'、 'vectorizer__tokenizer'、 'vectorizer__use_idf'、 'vectorizer__vocabulary']

関連する問題