2017-04-22 14 views
1

max_depthのパラメータがRandomForestClassifierであることを確認しようとしています。私たちは、RandomizedSearchCVを使用している:RandomizedSearchCVに配布またはNone値を選択する方法を教えてください。

from scipy.stats import randint as sp_randint 
from sklearn.ensemble import RandomForestClassifier 
from sklearn.model_selection import RandomizedSearchCV 

rf_params = {    # Is this somehow possible? 
       'max_depth': [sp_randint(1, 100), None], 
      } 

n_iter = 10 

random_search = RandomizedSearchCV(RandomForestClassifier(), 
            verbose=50, 
            param_distributions=rf_params, 
            n_iter=n_iter, 
            n_jobs=-1, 
            scoring='f1_micro') 

random_search.fit(X_train, y_train) 

はそれが可能にRandomizedSearchCVを伝えるのいずれか(ドキュメントのように)しますNoneに指定された分布sp_randint(1, 100) OR設定パラメータから選択することです:」...拡張し、すべての葉がされるまでのノードがありますまたはすべての葉がmin_samples_splitサンプル未満を含むまで... "

私は今、このコードを実行すると、私はこのエラーを取得します:docsからも

enter image description here

答えて

1

は:「リストが与えられた場合、それが均一にサンプリングされています。」

'max_depth': list(range(1, 100)) + [None] 
+0

回答ありがとうございますが、このようなリストからランダムに「なし」を選択する可能性は非常に低いですが、これは何とか改善できますか? – delusionX

+0

「改善された」とは何ですか?それが選択されたという保証が必要な場合は、GridSearchCVを使用する方がよいからです。 –

+0

おそらく、ユニフォームとは異なる分布をしています。幾何学的なもの(https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.geom.html#scipy.stats.geom)があります。確率P(x = None)。 – delusionX

関連する問題