現在、PythonとScikitの学習を分類の目的で使用しています。GridSearchを読んでいると、推定器のパラメーターを最適化して最良の結果を得るのに最適な方法だと思いました。
私の方法論はこれです:
- データをトレーニング/テストに分割します。
- GridSearchと5Fold Cross検証を使用して、推定器(ランダムフォレスト、勾配ブースト、SVCなど)をトレーニングおよびテストし、最適なハイパーパラメーターの組み合わせで最適な推定器を取得します。
- 次に、テストセットを使用して分類を予測し、実際のクラスラベルと比較して、Precision、Recall、FMeasure、Matthews Correlation Coefficientなどの各推定器のメトリックを計算します。
奇妙な振る舞いを見たのはこの段階であり、どうすればいいかわかりません。GridSearchから.best_estimator_を取得し、これをグリッド検索からの「最適な」出力として使用し、この推定器を使用して予測を実行しますか?これを行うと、すべてのトレーニングデータをトレーニングしてテストセットでテストする場合よりも、ステージ3メトリックが通常はるかに低いことがわかります。または、出力GridSearchCVオブジェクトを新しい推定器として単純に取得しますか?これを行うと、ステージ3メトリックのスコアが向上しますが、目的の分類子(ランダムフォレストなど)の代わりにGridSearchCVオブジェクトを使用すると奇妙に思えます...
編集: 私の質問は、返されたGridSearchCVオブジェクトと.best_estimator_属性の違いは何ですか?これらのどれを使用して、さらにメトリックを計算する必要がありますか?この出力を通常の分類子のように(たとえば、predictを使用して)使用できますか、またはどのように使用する必要がありますか?
refit=False
その後、clf.fit
最良の分類器で行うことがないのだろうか?