2017-12-03 12 views
0

Sklearnのパイプライン機能が、感情分析に役立つと思っています。私は、次のように私のパイプラインを定義していますSklearnのパイプラインでパラメータのチューニング/クロスバリデーションを行うにはどうすればよいですか?

しかし
Pipeline([('vect', CountVectorizer(tokenizer=LemmaTokenizer(), 
         stop_words='english', 
         strip_accents='unicode', 
         max_df=0.5)), 
      ('clf', MultinomialNB()) 

は、上記の方法でそれを定義することによって、私はパラメータチューニングを可能にしていません。次のようなmax_dfs = [0,3,0.4,0.5,0.6,0.7]と次のn_gramの範囲= [(1,1)、(1,2)、(2,2)、クロスバリデーションを使用して最適な組み合わせを見つけることができます。パイプラインの外側でこれを指定する方法はありますか?そうすれば、考えられるすべての組み合わせを検討することができます。もしそうなら、これはどのように行われますか?

ご協力いただきありがとうございます。

答えて

2

set_param関数を使用し、key_nameを<stepname>__<paramname>(二重下線を使用して結合)として渡すことで、パイプライン内の個々のステップのパラメータを設定できます。

これはギブからスコア関数を最大化するパラメータの組み合わせを識別するためにGridSearchCVと組み合わせることができる

p = Pipeline([('vect', CountVectorizer(tokenizer=LemmaTokenizer(), 
         stop_words='english', 
         strip_accents='unicode', 
         max_df=0.5)), 
      ('clf', MultinomialNB()) 
g = GridSearchCV(p, 
     param_grid={ 
       'vect__max_dfs':[0,3,0.4,0.5,0.6,0.7], 'vect__ngram_range': [(1,1), (1,2), (2,2)]}) 
g.fit(X, y) 
g.best_estimator_ 
+0

Awesoe、おかげ値! –

関連する問題