Python

はじめてのKaggle~pandas、scikit-learn

投稿日:2018年8月23日 更新日:

kaggle

kaggleは、機械学習や統計のためのデータを提供して、分析を競い合うサイト.
Googleが買収した.

kaggleコマンドのインストール

データのダウンロードや課題の提出は、kaggleコマンドを使ってコマンドラインから行うことができる.
アカウントを登録したら、kaggleコマンドを登録しておくといい.

次に、アカウントから認証のためのkaggle.jsonをダウンロードして、~/.kaggle/kaggle.jsonとして保存しておく.

権限が600でないと注意されるので、権限を変更しておく.

タイタニック:災害の機械学習

kaggleの課題は、企業から賞金がかけられているものもあるけど、チュートリアル的なものとしては、タイタニック号の乗客の性別や年齢などの情報から、生存者の特徴を機械学習するものが有名.

不正防止のための条件を読んでから、コンペティションに参加登録をするとデータがダウンロードできるようになる.

ブラウザからコマンドをコピーして貼り付けるのが楽.

ダウンロードされたデータ

ダウンロードされるデータは3つ.train.csvとtest.csvとgender_submission.csv.
train.csvは、乗客の特徴と生存したかどうかのデータ.学習用.
test.csvは、train.csvと異なる乗客の特徴.テスト用.テスト用の答えはなく、提出して初めて正答率がわかる.
gender_submission.csvは提出用データのフォーマットとしてのサンプル.テストの正解ではない.

乗客の特徴

乗客の特徴のデータは次のとおり.

VariableDefinitionKey
survivalSurvival0 = No, 1 = Yes
pclassTicket class1 = 1st, 2 = 2nd, 3 = 3rd
sexSex
AgeAge in years
sibsp# of siblings / spouses aboard the Titanic
parch# of parents / children aboard the Titanic
ticketTicket number
farePassenger fare
cabinCabin number
embarkedPort of EmbarkationC = Cherbourg, Q = Queenstown, S = Southampton

pandasでデータとたわむれる

とりあえず童心にデータをいろいろ触ってみるのがよい.

pandasでcsvからデータを読み込む

index用の値があるので、indexを指定するのがよい.

基本統計量をみる

データを分割してみる

生存者と死亡者にわけてみる.

PclassとAgeは、平均に有意な差がありそう.
Parchも平均に差がある感じ.
Fareは平均も違うけど、生存者のほうがばらつき(標準偏差)が大きい.

ヒストグラムにしてみる

やっぱり、クラスが低いほど生存率が高そう.

年齢では、単純には分けられないけど、低年齢層は生存率が高そう.

性差は、値がMale、Femaleなので、そのままではx軸にできないので、のちのちのためにも数値化しておく.
性差は、女性の方が圧倒的に生存率が高い.

相関を調べる

ピアソンの相関係数を調べてみる.
性差とクラスでははっきりと相関がありそう.
運賃も相関がありそうだけど、クラスと運賃は独立かどうか疑問がありそう.

pandasでもcorrで相関をまとめて調べることができた

クロス集計する

crosstab()でクロス集計することができる.
横は省略されやすいので、縦長の集計にしたほうがいいかも.

返り値も、pd.DataFrameなので、そこからまた操作もできる.
1等客室と2等客室の女性なら90%以上の確率で助かっていることがわかる.
3等客室の女性の生死をわけた要因はなにか?男性の生死をわけた要因はなにか?と細かく分析していくことになる.

scikit-learnで分類してみる

学習

とりあえず、決定木をつかって、性差とクラスで学習してみた.

テスト

完全に勘違いして、gender_submission.csvを正解と思ってしまっていた.
全体の平均が0.80くらいぽいから、0.82て結構いいじゃんみたいな.

提出用のファイルを生成

雛形の数値を予測した数値で置き換える.

提出はkaggleコマンドでできる.

結果 0.75598

orz
さすがに雑すぎた.

約9000中8137位

1日10回まで結果を提出できる.

運賃を加えてみたら0.02あがった!

提出結果の一覧もkaggleコマンドで見ることができる.

-Python
-, , ,

執筆者:

関連記事

市場テクニカル分析ライブラリta-libとPython用のラッパーTa-Libをインストールする

By: GotCredit – CC BY 2.0 目次1 ta-lib2 Ta-Lib ta-lib ta-libは市場のテクニカル分析用のライブラリ集. linuxの場合はソースコード …

Pythonではじめての強化学習3〜Actor and Critic model

By: Banalities – CC BY 2.0 目次1 課題 出力が連続値の場合2 Actor and Critic3 Actorにノイズを付与する4 結果 MountainCarC …

Tensorflowのモデリング2〜RNN

By: fdecomite – CC BY 2.0 目次1 Reccurent Neural Network(RNN)2 入力値を計算3 RNNのモデル4 損失関数とオプティマイザーの定義 …

Pythonではじめての機械学習2〜scikit-learnとpandasで決定木

By: vaboo.com – CC BY 2.0 目次1 決定木(Decision Tree)2 サンプルデータの用意3 学習用データと検証用データにわける4 scikit-learn5 …

Raspberry Pi3とsense HATで遊ぶ

By: Su Yin Khoo – CC BY 2.0 目次1 Raspberry Pi32 Raspbian3 Raspbianでsshを使う4 raspi-configで初期設定5 R …