自分のPython(django、機械学習)の勉強方法を記録していく(随時更新)

書くきっかけ

2月からgithubに書いたコードをあげだしたからなんとなく自分でも「やってる感」はあるし、毎日本当に少しだけど前に進んでいるとは思う。
けど、具体的に何をしたか、どんなサイトをみてどう勉強したかを記録しておいたら後から勉強する友人とかにも教えられるかな、と思ったのでブログの記事としてまとめておこうと思う。

参考書で学んだことをここにまとめている理由もそうだけど、何を学んだかを明確にしておくと、その中で何が出来ていないかがはっきりしてくる、ような気がする。



2018年2月

表計算ソフトExcelで仕様書を書き、SVNを使い、改修したコードの上下に「START」「END」と書かれているのに、なぜかイマドキな技術を使ったプロジェクトへアサインされることとなった。

ざっくり言うと、機械学習の機能が入ったDjangoを用いたWebアプリケーションの改修。サーバーはAWSでgitでコードを管理しているらしい。ナウい

ということで勉強しなくてはならないのだが、会社が何かをしてくれるわけではないので何もわからないままググり始める。

因みにこの段階ではPythonのパの字も知らない。少しコード見たけどself怖い。なんで関数の前後にアンスコついてるの…??2つも!!
Django(ジャンゴ)とgunicorn(ジーユニコーン)の読み方も知らなかった…。

勉強方法

Django公式チュートリアル
はじめての Django アプリ作成、その 1 | Django documentation | Django
DjangoGirls
公式チュートリアル済ませてたらささーっと読み流す程度でいいかなという感じ。
connpassで勉強会に参加。

学んだこと

Djangoの基本的な構成(MVT、ディレクトリ構造、各ファイルの関係性)。

躓いたこと・できなかった事

チュートリアルで書いている以上のことが書けない…。

解決に向けて行ったこと

・色々なコードを見てみる



2018年3月

さて、Djangoというものがなんたるものかがなんとな~~~く、うっすらわかったのでとりあえず手を動かして何かを作りたい欲に駆られますね。

勉強方法

naritoブログを参考にブログを作ってみる。
Tutorial Series — Simple is Better Than Complex
ここでより複雑なアプリケーションを作成する。ここのはすごいです。本当に一通り学べます。お世話になりました。
 「Simple Is Better Than Complex」はZen of Python
プログラマが持つべき心構え (The Zen of Python) - Qiita

学んだこと

・手を動かして何かを作ることで様々ことが分かった。
 ・viewsとかに少し濃い内容を書けるようになった。
 ・CBVが少しわかり始めた。
 ・testの書き方がわかった。
 ・1対多、多対多のmodelの書き方がわかった。

躓いたこと・できなかった事

・CBVで何をどうオーバーライドすればよいのかわからない。
・テンプレートにモデルを渡すのが思うようにいかない(viewsの書き方で不明な点が多い)。
・継承や、複雑な関数が絡んでくるとアレルギー反応が出る。
・自分で関数を書けないのでよくあるLikeボタンの実装などが出来ない

解決に向けて行ったこと

・CBVの使い方を色々調べて自分なりに機能の追加を試みた
Django Debug Toolbarとか導入してみた。



2018年4月

Twitterで「Kaggle Masterになりました!」というのが流れてきて(RTか何かわからないけどその時はフォローしていない人)、凄そうだけど何だろうと調べたのがきっかけでKaggleに登録し、機械学習を学び始めました。
「2018年2月」に書いてあるプロジェクトでも機械学習は使うけれど、もう実装済みだし、そっちはいじらないと言われていたし、Djangoを勉強し始めたばっかりで、その時は特に勉強するつもりはなかったんだけどなぁ。


今年の目標は「Kaggleでブロンズメダルを取ること!」とします。
上位40%…。遠いなぁ。

勉強方法

・参考書などで勉強したことを逐一ブログにまとめて頭を整理するようにした。
 【固定記事】まとめのまとめ
言語処理100本ノック
 Djangoを学んでいてもPython自体はいまいち学べていないと思ったので勉強。
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
 初心者には情報量が膨大すぎて50ページくらいで苦しくなった。ブログにまとめながら読み進めていった。
Aidemy
 各講座毎にJupyterNoteBookと、ブログに自分でまとめを書いた。ブログは「Pythonではじめる機械学習」についての記事に対して付け足す形で書いている。

学んだこと

・ブログにまとめることで何を学んだか、何が曖昧なのか自分でわかるようになった。
 今までは「ふ~ん」と流して読みがちだったけれど、ブログに公開するようになってから「人に説明できるようにならなくては」という意識が芽生えたのでより深く自分自身で調べてなるべく自分の言葉でアウトプットするようになった。
 1からググって色々なサイトを見なくても、後から自分で簡単に復習出来るというのも結構よかったと思う。
・Aidemyで機械学習の基礎を学ぶことが出来た。無料でこんなに出来るのは大変ありがたい。
 各講座毎に自分でまとめてどのアルゴリズムが、どういうもので、何を目的にしていて、どんな特徴があるのかをざっくり把握出来た。
・Aidemyで学習した後にオライリーの参考書を読むとすっと入ってきた。

躓いたこと・できなかった事

・「Pythonではじめる機械学習」を見たときにこの本だけでは分からない部分があり、逐一用語などを調べていたらなかなかすすまなかった(正規化、標準偏差等々…)。

解決に向けて行ったこと

・Aidemyがあることは知っていたのでやってみたら無料で出来る枠がとても大きくて、説明文がわかりやすかった。最初にやっておけばよかった(4/11から有料化)。





2018年5月

勉強方法

Tutorial: Django REST with React (Django 2.0 and a sprinkle of testing)
・Udemyで94%オフ(大体1400円だった)の時に以下の2つを購入。どちらも1.25倍速で視聴し、2周しました。
 1:React Native で iOS / Android アプリ開発をゼロから始めよう! | Udemy
 一つ一つかなり丁寧に説明してくれていたのでどこでどのような動きをしているか、どのような意図でそのコードを書いているのか全て終わったら自分で説明出来るようになった。また、やっている途中で講師の方もエラーを出しているが、逆にそれが良かった。なぜそのようなエラーが出ているのかをすぐに説明してくれていたし、時にはReactNativeが中でどのような処理を行っているかも簡単に説明してくれていた。今後のデバッグの参考にもなった。
 2:最短で学ぶReactとReduxの基礎から実践まで | Udemy
 関西訛りのとてもスピーディな説明だった。タイピング音がうるさいとのレビューもあったけど慣れば特に気にならない程度だったと思う(サンプル動画で確認可能)。実際に開発する時に使えるような手法が、コーディングだけではなくTerminalでの操作についても説明されているので、色々なところで活かせそう。また上のUdemyの講座とは異なり、一番最初に完成形のコードがのってある。


学んだこと

・React + Reduxの基礎
・React Nativeの基礎

躓いたこと・できなかった事

DjangoとReactを一緒に使用する方法がわからない(Tutorial: Django REST with React (Django 2.0 and a sprinkle of testing)で多少解決出来た)


解決に向けて行ったこと