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
Toolbarで表示する矢印アイコンの色を変えたい

http://stackoverflow.com/questions/26788464/how-to-change-color-of-the-back-arrow-in-the-new-material-theme 動的に色を変えるイイカンジな方法が分からず困っていた。 …

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

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

ReactNativeでGiphyのデータを表示する

まずは下記をサクッとパクってみる。 当方、比較的AndroiderなのでAndroidで。 …

no image
単語の出現頻度をlinuxコマンドだけで調べたい

無駄にpythonとか使おうとしてた。。 楽にできて良かった。 …

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

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

no image
MecabをPythonから使いたい

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

no image
GrowthPushのAndroid-SDK(?)のコードを読んでみる

できること、できないことを知るために。 GrowthPush.java …

no image
Mastodonインスタンス(お一人様用)を作り方メモ

Mastodonは運営の存在を気にせず罵詈雑言吐けるの便利そう。 自分用のインスタンス作ったので、便所の落書きしておく。 …

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

Modelを作り、コンソール上からデータを追加した。 次はこのデータをlocalhost:3000にアクセスしたときに表示させてみたい。 …

Dockerでよく使うコマンド

随時追加 Contents1 …