はじめまして。2018年1月に入社した奥田(@yag_ays)です。 先日、scikit-learn-contribの1つであるCategory Encodersの最適化を実装したPull Requestがマージされたので、そこに至るまでのプロファイルや最適化の過程を紹介したいと思います。 普段、私の仕事は機械学習やデータ分析がメインで、あまりPythonの処理レベルで早いコードを書いたりすることはありません。もちろん最適化なんてことについては、あまり経験を持っていない素人なのですが、この記事が皆さんのプロジェクトを最適化する際の参考になれば幸いです。 tl;dr scikit-learn-contribの中のcategory_encodersの実行速度を最適化した Pythonのプロファイリングにはline_profiler、デバッグにはpdbが便利 Pandasのカラムをfor文で書き