2017-03-23 7 views
1

私は、sklearn.grid_search.GridSearchCVを使ってIrisデータセット上の決定木の分類子に最適な機能を得ようとしていました。データが偏っているので、クロスバリデーションにStratifiedKFold(sklearn.cross_validation.StratifiedKFold)を使用しました。しかし、GridSearchCVが実行されるたびに、別のパラメータセットが返されました。
データとクロスバリデーションが毎回同じであることを前提に、同じ最適パラメータのセットを返してはいけませんか?sklearn.grid_search.GridSearchCVが実行ごとにランダムな結果を返すのはなぜですか?

ソースコードは次のとおりです。

from sklearn.tree import DecisionTreeClassifier 
from sklearn.grid_search import GridSearchCV 

decision_tree_classifier = DecisionTreeClassifier() 

parameter_grid = {'max_depth': [1, 2, 3, 4, 5], 
        'max_features': [1, 2, 3, 4]} 

cross_validation = StratifiedKFold(all_classes, n_folds=10) 

grid_search = GridSearchCV(decision_tree_classifier, param_grid = parameter_grid, 
          cv = cross_validation) 

grid_search.fit(all_inputs, all_classes) 

print "Best Score: {}".format(grid_search.best_score_) 
print "Best params: {}".format(grid_search.best_params_) 

出力:これは、することができ、私はランダル・S・オルソンさんノートを参照して、最近作られたIpythonノートからの抜粋である

Best Score: 0.959731543624 
Best params: {'max_features': 2, 'max_depth': 2} 

Best Score: 0.973154362416 
Best params: {'max_features': 3, 'max_depth': 5} 

Best Score: 0.973154362416 
Best params: {'max_features': 2, 'max_depth': 5} 

Best Score: 0.959731543624 
Best params: {'max_features': 3, 'max_depth': 3} 

見つけたhere

編集: そのない多様な結果をもたらすStratifiedKFoldrandom_stateパラメータではなく、ランダムツリーを初期化し(documentationを参照)多様な結果を与えるDecisionTreeClassiferrandom_stateパラメータ。 StratifiedKFoldについては、shuffleパラメータがFalse(デフォルト)に設定されている限り、同じトレーニングテストの分割が生成されます(マニュアルを参照)。

答えて

0

実行ごとに、cvは列車と検証セットをランダムに分割します。したがって、それぞれの結果は異なります。

0

トレーニングの結果は、相互検証で列車データが分割される方法によって異なります。あなたが走るたびに、データはランダムに分割されるので、あなたはあなたの答えに軽微な違いを観察します。 random_state parameter of StratifiedKFoldを使用して、列車データが毎回まったく同じ方法で分割されるようにする必要があります。

randomstateについての詳細を知るために私の他の回答を参照してください:

+0

そのない様々な結果になりStratifiedKFold' 'の' random_state'パラメータではなく、むしろの 'random_state'パラメータ木をランダムにランダムに初期化し、様々な結果を与える 'DecisionTreeClassifer'。 'StratifiedKFold'は' shuffle'パラメータが 'False'(デフォルト)に設定されている限り、同じ訓練テストの分割を生成します。私はこの結果を[ここ](https://github.com/darthv115/Machine-Learning-and-Data-Science-Projects/blob/master/Iris_Classification/Rectifications_to_original_notebook.ipynb)にある個別のIpythonノートブックでチェックしました。 – darthy

関連する問題