나는 sklearn.grid_search.GridSearchCV
을 사용하여 아이리스 데이터 세트를 통해 의사 결정 트리 분류자를위한 최적의 기능을 얻으려고했다. 내 데이터가 바이어스 된 이후에 교차 검증을 위해 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.
편집 : 아니고 다양한 결과를 초래 StratifiedKFold
의 random_state
매개 변수가 아니라 무작위로 트리를 초기화하고 다양한 결과를 (documentation 참조) 제공 DecisionTreeClassifer
의 random_state
매개 변수입니다. StratifiedKFold
의 경우 shuffle
매개 변수가 False
(기본값)으로 설정된 경우 동일한 교육 테스트 분할이 생성됩니다 (설명서 참조).
그 아니라'random_state' 매개 변수 만의 오히려'random_state' 매개 변수 :
내 다른 대답은 randomstate에 대한 자세한 내용을 알고보기 '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