Kaggleで入賞を目指すブログ

データ解析コンペサイトKaggleに挑みはじめた入門者の記録

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())