Pythonで実装したグリッドサーチによる解析結果が実行するたびに変わるのは何故

実現したいこと

Pythonで実装したグリッドサーチの解析結果を固定する

前提

scikit-learnのload_breast_cancerのデータをCARTにより分析する際に、最良のパラメータ(今回は木の深さ)を見つけ出すためにグリッドサーチを使っています。
深さの探索範囲を1~10とし、実際にグリッドサーチにより深さを求めたところ、最良の深さが解析するごとに変化してしまいます。
これは何かしらコードにミスがあるのか、それとも仕様なのかを知りたいです。

イメージ説明

Python

1from sklearn.model_selection import GridSearchCV 2from sklearn.tree import DecisionTreeClassifier 3from sklearn.model_selection import train_test_split 4from sklearn.datasets import load_breast_cancer 5 6cancer = load_breast_cancer()7 8X_train, X_test, Y_train, y_test = train_test_split(cancer.data, cancer.target, 9 test_size=0.3, shuffle=True, random_state=010 )11 12param_grid = {'max_depth': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}13 14print("Parameter grid:\n{}".format(param_grid))15 16grid_search = GridSearchCV(DecisionTreeClassifier(criterion='gini'), param_grid, cv=5)17 18grid_search.fit(X_train, Y_train)19 20print("Test set score: {:.2f}".format(grid_search.score(X_test, y_test)))21print("Best parameters: {}".format(grid_search.best_params_))22print("Best cross-validation score: {:.2f}".format(grid_search.best_score_))

試したこと

train_test_splitのrandom_stateは固定していて、分割されたデータの中身を確認してみても中身は変化していないので、分析対象のデータが変更されているということはないと考えています。

補足情報(FW/ツールのバージョンなど)

Anacondaのspyderを使用しています。

コメントを投稿

0 コメント