Python プログラミング

Kaggleのタイタニックで標準化して決定木で分類してみるメモ

機械学習の勉強で、Kaggleのタイタニックを題材に適当にscikit-learnをいじってます。

今回は標準化をしてから決定木での学習&分類を試してみたのでそのメモになります。

 

自学習用のメモになるので、精度や学習の方法は参考にならない部分が多いと思いますが、何卒ご理解ください。

 

処理の流れ

はじめに今回行う各処理の流れをまとめます。

 

  1. csvデータ読み込み
  2. データのクリーニング
  3. トレーニングデータを学習用と検証用に分ける
  4. 標準化
  5. 決定木で分類

この中で、4と5に関してはせっかくなのでPipelineでまとめてみます。

 

1. csvデータ読み込み

特に記載は不要かと思いますが、とりあえずはじめにpandasでデータを読み込みます。

 

 

2. データのクリーニング

クリーニングと呼んで正しいのか分かりませんが、欠損値と文字列で表現されている特徴量を数値化します。

今回行ったのは、以下の処理です。

 

  • Sex(性別)を「男性: 0, 女性: 1」に変換
  • Embarked(乗船)を「Q: 0, S: 1, C: 0」に変換

 

性別は良いとして乗船場所に関しては、

「Q」と「C」に比べて「S」が生存率が高かったので「S」のみを1、他は0にしました。

 

 

3. トレーニングデータを学習用と検証用に分ける

データの加工をしたので、次にトレーニングデータを学習用と検証用に分けます。

また今回最終的に使用する特徴量は以下の通りです。

 

  • Pclass
  • Sex
  • Age
  • Sibsp
  • Parch
  • Embarked

 

検証用データを全体の20%としてみました。

 

 

4. 標準化

各特徴量を標準化します。標準化を自分の認識で言語化すると、

「各特徴量のスケールをいい感じに統一する事」

 

ある特徴量が1000〜2000の値をとり、ある特徴量が1〜10の値をとる場合、

スケールに差がある為学習制度が良くない場合があるので、それを回避する。

 

(間違ってたらコメントください。。)

 

 

一旦ここでは、標準化のコードを乗せていますが、後述でPipelineに載せるので最終的なコードからは消えます。

 

5. 決定木で分類

決定木を使って、学習とスコアを測定します。木の深さは3にしています。

 

 

ここでも一旦コード乗せましたが、Pipelineにしてみます。

 

 

綺麗になった気がします。最終的なコードは以下です。

 

 

手順2の部分が関数になっていますが中身は同じです。

このあとタイタニックの本番分類で同様の処理をスコア測定用のデータに行いたかったので関数化してます。

 

ちなみに、この時点で検証用データでのスコアは「0.7528089887640449」でした。

うーん。。低い。

 

スコア測定

いよいよスコア測定です。以下のコードでcsvを作成し、Kaggleにアップします。

 

 

結果は、、

 

約60%。。ひどすぎるw

もっと頑張ります。機械学習本当に難しい、圧倒的に難しい。。

 

よく読まれている記事

1

  現在5年目のエンジニアで26歳です。 今回は20代の現役エンジニアとして、自分も含め転職について考えている方に向けて20代エンジニア転職に完全特化したおすすめのサービスを3つ紹介していき ...

2

これからエンジニアになりたい、プログラミングを使えるようになりたいという方に向けて 山のようにあるプログラミングスクールの中から、特におすすめなスクールをタイプ別に逆引きで3つ紹介します。 &nbsp ...

3

みなさんはを使っていますでしょうか。   本記事を見ていただいているということは、   プログラミングの勉強でを使うことに興味がある、 もしくはこれから動画を購入したいけどどれを買 ...

-Python, プログラミング
-, , ,

© 2020 クラインの備忘壺