CourseraのMachine LearningをPythonでやり直す #1

そろそろ機械学習に再チャレンジする時が来た!と思い立ち、CourseraのMachine Learningをやり直しています。

背景

実は2016年前半にCourseraのMachine Learningを完走した。当時は業務でプログラミングをした経験がなかったのを考えると我ながらスゴイ。
それ以降何もしてなかったんだけど、Webアプリとか作れるようになって来たし、いよいよ機械学習を組み込みたい!

CourseraではOctaveというMatlab互換のプログラミング言語でやったので、同じ教材を今度はPythonでやる。
目標は...
1. MNIST(手書き数字の画像認識)くらいは手組みで作れるようになる。
2. ニューラルネットワークが出てくるようになったらライブラリを使いこなして頑張る。
3. 上記を踏まえ、Kaggleでコンテスト参加できるようになる!

初回の感想

全8回のうち1回目をやり直した!初回は線形回帰(ある変数とそれによって変化する変数の関係をy=ax+bに落とし込むこと)
楽しいけど本筋関係ないところでつまづきがちなのがいただけない。でもPythonの方がOctaveよりドキュメントは多いね〜!

成果物!

f:id:hiroga_cc:20171209080609p:plain
最小二乗法!

やった内容はどんどん追記していくよ。
github.com

つまづきどころ

  • numpy.ndarrayの.transpose() が、一行の配列には対応していないこと!reshape()っての代わりに使うといいらしい。
  • グラフを出力するときは、一次関数の傾きと切片だけでは出力してくれない(matplotlibの話)。代わりに、x,yの組み合わせの配列を作って渡す。
  • numpy.sum()を多次元配列に対して使うと、全要素を合計してしまう!行毎の合計ならsum(axis=0)とか、指定する必要あり。

楽しくやってます( ´ ▽ ` )ノ