Python を学ぶ / 2021年2月18日
昼はアソビルの横濱丿貫。相変わらず美味しい煮干しそば。
その後、横浜駅周辺では一番技術書が揃ってるという噂を聞いて、そごう7Fにある紀伊国屋へ。7Fは大きなロフトや無印もあるのね、いままでそごうは地下~1Fまでしか行ったことがなかったので新鮮。
そして技術書は噂通り充実していた。というかPython、機械学習、ディープラーニング、データサイエンスの棚がやたらと広く勢いを感じる。これらの本を眺めたくて来たのでありがたいのだけど。Pythonとディープラーニングの本、一体何冊あるんだ、雨後の筍の如くだなぁ。かたやWeb, モバイルアプリはそれらに比べるとだいぶ棚面積が小さい。
機械学習、ちょっと横道にそれて Python を学ぶ。ざっくと学ぶのに良いドキュメントはないのかなーと見回すと、普通にオフィシャルのチュートリアル(日本語)が分量的にも良い感じだったので一通り読む。
さいきんの言語に比べ、古く親しんだPerl, PHP, Rubyと並べられがちな世代の言語なので普通に使う分には似通っていてる部分も多く、Python だとこうなのねー、と作法的な書き方を一通り学ぶ。シーケンスとイテレータ、ジェネレータとリスト内包表記おもしろいなー、とか、クラス周り酷いなぁとか、Python3での書き方(書籍Pythonではじめる機械学習はPython2でも動く書き方をしている)ではこうなのかーとか。
また、Python で型周りはどうなってるのかなーとちょっと調べると、Python 3.5 から型ヒントが入って、それらを使った型チェッカーmypy/pyright/pyreなど色々出てるし、各種ライブラリ、例えば NumPy は最近1.20でnumpy.typing が入ったようで、それなりに型を使ったサポートがされるようになったようで、この辺の型システムの整備も近年一気に進んでいるのだなぁ。
とりあえずpylance(pyrightを使ったMS謹製のVSCode拡張、まだPreview版)を入れた所、ふつうの python スクリプトはだいたい良い感じにVSCode上で型補完がされ、VSCode 上の Jupyter Notebook でもバグりやすいながらも(変数などの状態が消える。再読み込みが必要)、型補完がそれなりに効くようになった。
Python学習は機械学習周りと違ってサクっと調査・ドキュメントを読めて楽だなぁ。
機械学習学習日記 - 17日目
今日からは第4章のデータの表現と特徴量エンジニアリング。特定のアプリケーション(ドメイン)に対して最良のデータ表現を模索することを特徴量エンジニアリングと呼ぶ。
4.1 カテゴリー変数では、数値化されていないカテゴリーラベルを0,1へと数値化するワンホットエンコーディング(ダミー変数)について。また連続値として扱うべきでない数値のワンホットエンコーディングの方法(ただ単に該当列のintをstrにキャストするだけ)など。ここで pandas の DataFrame のざっくりとした使い方を理解する。
4.2 ビニング、離散化、線形モデル、決定木では、連続する数値データを分割して境界分けすることで、線形モデルでも決定木と同じ結果を出している。ビニング=離散化。境界分けには、NumPy の linespace, digitize して、ワンホットエンコーディングへの変換には sklearn の OneHotEncorder を使っている。これで10個の瓶分けなら、0,1に値分け(1は1つ)されたの10次元データができあがる。