プログラミングが少しできる人がkaggle(機械学習)を始める方法

皆さん、機械学習は好きですか?好きですよね?
ということで機械学習を楽しんでできるサイト、kaggleを始める方法を書いていきます。

前提条件

プログラミングのソースコードが割と読める(そうでないとソースが読めない可能性)
atcoder緑ぐらいのプログラミング力があると良い(競プロer間での便利な指標)

1、まずはkaggleに行って登録しよう

サイトに行ってメールアドレスとニックネームを入れて登録しましょう。
(考えるよりも動いた方が自分は楽でした)

2、環境構築

難しいことは考えずanacondaを入れましょう。
一つのパッケージみたいなもので、jupyter notebook(エディター)やpythonなど、必要なものが一通りそろいます。
これは適当に「anaconda python」とかで検索すればうまくいくと思います。
コマンドプロンプトを使ったcondaでのinstallなどを駆使するのもありです。

3、サイトを探索してチュートリアル機械学習をやろう

kaggleのチュートリアルとして使えるものにタイタニックでの生存の推定があります。
しかし、kaggleが英語なので結構サイト内で迷子になります。competitionをクリックしてリストからtitanicを探しましょう。
最初自分はサイトに慣れるだけで体力なくなりかけました。

カテゴリーの参考(タイタニックはget started)
KaggleのCompetitions Categoriesを整理してみた - Qiita

4、他人のブログのコードをコピーしてでも理解しながら頑張ろう

anacondaからjupyterを使ってコードをテストしたら色々な方のブログを参考にしましょう。
はっきり言って機械学習の単語はどれも難しいです。
むしろコードから読み取った方が簡単なものもあり、実際に動かしながら一行一行見ていくのが良いです。
以下はタイタニックで参考にした記事です。コピーしてもエラーを吐くものがあるので注意しましょう。

しっかり動くし流れがわかるのでおすすめ(出力がindexの変更なので少し強引かも。)
【Kaggle初心者入門編】タイタニック号で生き残るのは誰?

5、4をしている間に困りそうなことへの解説(pandas,numpy)

機械学習ではpandasというpythonのライブラリを使うことになります。これは入力で渡されるcsvを読み取るのに適していたり、
行列形式のデータを簡単にDataFrame型という型などに持ち込んで見やすくしてくれます。
このデータとnumpyの行列を行き来してモデルを作ります。pythonは型が見えないのでエラーを起こしがちです。気をつけましょう。
また、ファイルの読み込み時ですが、csvファイルと作成した.jupnbの場所が同じになるようにすると、df.read_csv('test.csv')とファイルの場所を簡単に書けます。
(結構困ったけど記事がなかったので自分で書くスタイル)(この記事の存在意義)

6、House Priceもやろう

タイタニックと同じくtutorialでHouse Priceというチュートリアルがあります。
入力がとても多く、特徴量の扱いが難しいですが、これは以下のカーネルなどを参考にするとよいです。

動く。それだけでありがたい
Kaggle 日本語チュートリアル:Prediction(予測) House Prices

流れがわかってとても良い(だけど手元の環境だと動かない)
Kaggleの練習問題(Regression)を解いてKagglerになる - Qiita

7、ディープラーニングをやろう

digit recoginizerという画像認識のチュートリアルがkaggleにあります。
自分も挑戦予定です。現在多分バージョンが違って動かないので泣きそうです。

参考にしようとした記事
Kaggle Digit Recognizer Tutorial: chainer_sklearn を使ったお手軽ディープラーニング - Qiita

8、おすすめの記事

未完成ですが流れがとてもよくわかる
Kaggleに登録したら次にやること ~ これだけやれば十分闘える!Titanicの先へ行く入門 10 Kernel ~ - Qiita

9、まとめ

いかがでしたでしょうか。エラーから抜け出せなくなりがちなのでとにかくたくさんの記事を読むのが重要です。
多分ここまでやるのに一週間~二週間ぐらいかかると思います。
しかし、現在私は割と機械学習について割と知れたような気がします。よってその価値はあるのではないでしょうか。
これであなたもkagglerだ!(適当)


追記
どうやら自分の環境のpipとcondaが混ざっており、動かないコードが多かった模様です。
なので環境をどちらかに統一すればうまくいくかもしれません。