グリッド検索CVを使用したKNN推定器に最適な一連のハイパーパラメーターを見つけました。
>>> knn_gridsearch_model.best_params_
{'algorithm': 'auto', 'metric': 'manhattan', 'n_neighbors': 3}
ここまでは順調ですね。これらの新しく見つかったパラメーターを使用して、最終的な推定量をトレーニングします。上記のハイパーパラメーター辞書を直接フィードする方法はありますか?私はこれを試しました:
>>> new_knn_model = KNeighborsClassifier(knn_gridsearch_model.best_params_)
しかし、代わりに期待される結果new_knn_model
dict全体をモデルの最初のパラメーターとして取得し、残りのパラメーターをデフォルトのままにしました:
>>> knn_model
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
metric_params=None, n_jobs=1,
n_neighbors={'n_neighbors': 3, 'metric': 'manhattan', 'algorithm': 'auto'},
p=2, weights='uniform')
本当にがっかり。
次のようにして行うことができます。
new_knn_model = KNeighborsClassifier()
new_knn_model.set_params(**knn_gridsearch_model.best_params_)
または、@ tarasが提案するように直接解凍するだけです。
new_knn_model = KNeighborsClassifier(**knn_gridsearch_model.best_params_)
ちなみに、グリッド検索の実行が完了すると、グリッド検索オブジェクトは実際には(デフォルトで)最適なパラメーターを保持するため、オブジェクト自体を使用できます。または、次のようにして、最適なパラメータで分類子にアクセスすることもできます
gs.best_estimator_
grid.best_parameters
を使用していることを指摘し、unpacking
を使用してそれらを新しいモデルに渡します。
my_model = KNeighborsClassifier(**grid.best_params_)
すべてが良いですし、私は個人的にそれをたくさん使用しました。
ただし、ドキュメント here で確認できるように、これらのbest_parametersを使用して何かを予測することが目的である場合は、これらを最適に使用するgrid.predict
メソッドを直接使用できます。デフォルトであなたのためのパラメータ。
例:
y_pred = grid.predict(X_test)
これがお役に立てば幸いです。