Kaggle Titanicのpython tutorialをやってみた
Kaggleの課題は初挑戦ですが、手始めに以下のtutorialをやってみたいと思います。
Pythonパッケージをインストール
必要なPythonパッケージであるnumpy, scipy, pandas, matplotlib, csvが揃っているかどうかを確認。
ちなみに私はPython 2.7.2 / Mac OS X 10.8.5を使ってます。
>>> import numpy >>> import scipy >>> import pandas Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named pandas >>> import matplotlib >>> import csv
pandasがないようなので下記のようにインストール。
sudo easy_install pandas
なんかnumpyのversion conflictが起きたようなので、numpyのバージョンをあげます。
sudo easy_install -U numpy
クソ大量のwarningを吐いたものの、無事にインストールできました。そのあと上記のコマンドでpandasをインストール。こちらもクソ大量のwarningを吐いた後に無事インストールできました。
csvのデータを読み込み
下記のような書き方は知らなかった。特定の項目が特定の場合であるかどうかを判定した配列を作り、それをマスクとして利用している。(この場合は性別が"female"であればtrueとなるような配列を作り、マスクとして利用)
women_only_stats = data[0::,4] == "female" women_onboard = data[women_only_stats,1].astype(np.float)
また、下記のopenメソッドのrbというのはバイナリモードを意味しているっぽい。
open('xxxx.csv','rb')
xrangeとrangeの違い
ふと気になったので調べてみたが、xrangeは遅延評価されるので、長いrangeを用意した時に食うメモリ量が少ないらしい。途中でbreakが頻発するような場合に有効ぽい。
pandasめっちゃ便利
pandasだとデータの可視化をかなり簡単にやってくれるので非常に便利だった。これはもっと前に知っておきたかった・・・!Rライクに使えて、すぐにヒストグラムまで書いてくれる。pandasでデータの全体像を把握、加工を行い、それをnumpy arrayに変換してtrainingするという流れの模様
下記のように欠損値を埋める処理をしたりできる。
train.Age = train.Age.fillna(train.Age.mean())