moxt

Just another Blog site

『Tutorial & Hackathon #1』をやってみる

      2015/07/03

https://pydata.tokyo/news/pydata.tokyo-tutorial-hackathon-1

タイタニックの乗客データから生存者の推定モデルを作成してる。

実行環境を整える

Anacondaをインストール

Anacondaか自分で必要なライブラリを導入するか、2つの選択肢が与えられている。
自力でライブラリを導入する意義が特にないと思うので、Anacondaを使う。

OpenCVするためにAnacondaをインストールしたときのやり方で問題なさそう。

kaggleからタイタニック関係のデータをダウンロードする

データを取得するためにはkaggleというサービスにユーザ登録しないとダメみたい。
登録する。

いろいろデータがあって混乱する。

  • train.csv
  • gendermodel.csv
  • genderclassmodel.csv

を、適当にダウンロードした。

データの読み込み

https://pydata.tokyo/ipynb/tutorial-1/dh.html#1-1.-データの読み込み

いきなりよく分からない。
IPythonという対話的にPythonな処理を実行できる環境上でコマンドを入力しているみたい。

ターミナル上でipythonを打ち込めばIPythonが立ち上がる。

意味不明。

IPythonにはnotebookという機能がある。
よく分からないが、ブラウザ上でIPythonを実行できるスゴいヤツだ。

ipython notebookと打ち込むとブラウザが立ち上がってIPythonできるはず。
どうやらここで%matplotlib inlineを実行しないとダメみたいだ。

これが分かれば後は楽勝。
コピペすればOK。

コピペして実行すると以下のような感じになるはず。

スクリーンショット 2015-03-28 18.11.13

data/train.csvはnotebookを実行したパスを起点に見てるので、dataディレクトリを作ってtrain.csvを置いておかないとダメ。

以降の処理も基本はコピペすればできる。
実行しつつ謎な部分をメモしてゆく。

Pandasの機能をざっくり紹介

Pandasというライブラリを使ってCSVファイルからデータのテーブルを作ったり、統計処理を行ったり、図示したりするみたい。

年齢の高い上位10名を確認してみましょう。

実行結果が貼ってないのでやってみる。

たしかに全員男だ。

あるキーの値がNullである数を集計

部屋番号が例になっていた。

Nullじゃない数を集計したい場合は下記のとおり。

あるカラムを削除する

CabinとTicketが不要ということで削除していた。

欠損値を補間

年齢がNullな乗客データを各性別の平均年齢をあてて補間しようとしてる。

平均年齢は次のようにして算出してる。

で、この平均年齢をfillnaというメソッドを使って、Nullな乗客の年齢を補間していく。

http://pandas.pydata.org/pandas-docs/dev/generated/pandas.Panel.fillna.html?highlight=fillna#pandas.Panel.fillna

カラムの追加

https://pydata.tokyo/ipynb/tutorial-1/dh.html#カラムの追加

『df[キー名] = map系の操作』でカラムを一気に追加できる。

データの可視化

乗客の生死をヒストグラムでプロットしている。
素直にコピペすると

ValueError: Invalid chart type given hist

と、エラーが発生した。

Anacondaが抱えてるpandasのバージョンが古かったことが原因だった。

2015/03/29現在
pyenvでインストールしたAnacondaではpandas0.14.1が使われている。
conda listで確認できる。

conda update pandas

で、いろいろアップデートされるはず。

アップデートを適用するためにはnotebookを再起動する必要がある。
これまで作った変数(dfとか)がリセットされるので注意。

df['Survived'].plot(alpha=0.1, kind='hist', bins=2)のbinsってなに

グラフを表示するときの分割数…かな。
bins=100とすると0から1を100分割して値をプロットしてゆく。そうすると見た目はこんな感じになる。
0,1しか値がないので間の0.5とかその辺りがポッカリ空いてる。

スクリーンショット 2015-03-29 20.18.39

 - プログラミング

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

  関連記事

no image
gitであまり使わないけど知らないと困るコマンド一覧

随時追加 originのURLを変更したい …

LJ_Gsz28
コードを雑に読むアプローチでScrapyを入門する

Scrapyはスクレイピング用フレームワークなので、登場人物多すぎてよく分からない。 彼らの関係性や役割を理解を深めるために『Data …

no image
RubyMine(OSX)でGit操作するときのコマンド集

GITを操作系のポップアップを表示したい

no image
意識低いRuby on Rails再入門1

整理がてらメモ。 Contents1 …

logo_og
ReactとFluxとReduxについて順を追って整理する

書き途中 Contents1 …

no image
RDSの特定のデータベースをダンプする

Publicly Accessibleがyesならどこからでも下記が実行可能。 …

logo_og
ReduxのMiddlewareについて理解したいマン

ReduxのMiddlewareの仕組みがよく分からない。 具体的な処理過程を追いかけて理解に至るまでのメモ。 …

no image
MecabをPythonから使いたい

ベイズ分類器を自分で作りたかった。 そのためには、文書を単語の集合に変換する必要がある。 …

no image
意識低いRuby on Rails再入門5

http://railstutorial.jp/chapters/sign-in-sign-out?version=4.0#top この辺を読んだメモ。 …

no image
Bower再入門

Contents1 Bowerとは何なのか2 …