かえるのプログラミングブログ

プログラミングでつまずいたところとその解決策などを書いていきます。

kaggle 初心者 vs データの全貌

かえるるる(@kaeru_nantoka)です。

今回は、kaggle歴 2週間の初心者である私が知らずに苦労した点とその解決策を備忘がてら書いていきます。

データの参照についてです。

 

*******

1. はじめに

2. つまづき

3. 更なる問題

4. 今回の解決法

5. まとめ

*******

 

1:はじめに

本題に入る前にお伝えしておかないといけないのが、kaggle のコンペで自分の学習モデルを提出するまでのプロセスです。

私の現在時点の認識ですが、

 

( i )データをDLし、読み込む

→ ( i i )  欠損データを代わりのもので置換する

→ ( i i i ) 文字データを数値で置き換える or 数値で表せるような新たな特徴量に定義し直す

→ ( i v ) 機械学習モデルに学習させる

→ ( v ) モデルを提出する

 

という大きく分けて 5つのプロセスを踏みます。

特に ( i i ), ( i i i ) を前処理といってこれだけで膨大な時間がかかります。

 

この辺りの方法はカーネルを見たり、「kaggle 初心者」 とググったらタイタニック問題を題材に強い方々がわかりやすく説明してくれているので、そちらを参照すると良いでしょう。

 

2:つまづき

初心者である私は、まず強い方々がわかりやすく解説してくださっている日本語のブログなどを写経していました。

 

f:id:kaeru_nantoka_py:20180823000922p:plain

 

これはカーネルや日本語の解説記事などでまず書かれていないといっては過言ではない、お決まり文句です。

 

kaggle では、分析に必要なデータを csv という形式で配っているのですが、それをそれぞれ train, test という変数に格納し、head( ) というメソッドではじめの 5行を表示しています。

 

初心者の私はここでつまづきました!(早い!)

なんでデータのカケラしか見えないんや。。。

 

もともと私は要領が良い方でなく、全てのデータを見ないといちいち何の処理をしているのかが理解できませんでした。

 

また前処理 ( i i ), ( i i i ) で欠損値や数値置換をする必要もあるので、やはりどこに何があるのかを把握しておきたいものです。

 

そこで私は、

「 pandas データ 全部見る」といった具合でググってついに見つけました。

https://qiita.com/tanemaki/items/2ed05e258ef4c9e6caac

 

f:id:kaeru_nantoka_py:20180823002624p:plain

 

グラフのバーが小さくなったのがわかります。

これでこのタイタニック問題の全データが見れるようになりました!

 

3:更なる問題

しかし、この方法にもことkaggle においては重大な問題があります。タイタニック問題は、せいぜい 900行*12列 でしたが、他のコンペでは 30万行など膨大な量のデータがあります。

 

そうです 30万行です(苦笑)

表示しても全部見るのは大変ですし、そもそもMacBook Air くらいのスペックのPCだと読み込むのにだいぶ時間がかかって作業に支障をきたします。

 

4:今回の解決策

結局、私は以下の方法にたどり着きました。

任意の 行*列 を抜き出す方法です。

 

f:id:kaeru_nantoka_py:20180823004117p:plain

 

[ 行 , 列 ] で 2~5 * 2~5 のブロックを抜き出すことができました。これで抜き出す範囲をうまく調整することで、任意の場所を参照できます。

 

5:まとめ

kaggleに参加してみたい初心者がぶつかりそうなこととその解決方法を、初心者の私がその時のシチュエーションそのままにお送りしてきました。

また何か、つまづきや気づきがあったら記録します。

 

ありがとうございました。