LoginSignup
2
6

プログラミング初心者がKaggleチュートリアルに挑戦してみた

Last updated at Posted at 2019-04-14

はじめに

はじめまして。初めてQiitaに投稿します。
一週間前から、機械学習に興味を持ち、pythonをかじり始めました。
Qiitaの存在を知ったのもその頃なので、技術系ブログ作法というかマナーというか、そういうものが抜けていたら、こっそり教えていただけると幸いです。

投稿者の紹介
機械学習はおろか、プログラミングもほぼ初心者。
数年前に、ドットインストールを視聴して、HTMLやCSS、PHP、MY SQL等のコードを真似て、遊んでいた程度。
(当時は全コース無償提供されていました。)
統計学どころか基本的な数学の知識にも乏しい。英語も儘ならず。

環境
Windows OS
jupyter notebook

pythonとの出会い
機械学習エンジニアになりたい人のための本』を読み、機械学習にはpythonが適していることを知りました。
現在、ProgateUdemyで学びながら、Kaggleのタイタニック号の課題にサブミットする日々です。

Titanic:Machine Learning from Disaster との闘い

まだまだ自分でコードを書くこともできないのに、チュートリアルならできるだろうとたかをくくり、学習を初めて5日あまりでKaggleのアカウントを作成しました。
甘かった・・・

Qiitaで関連記事をとりあえず読み漁ります。何が関連しているのかすら分からないまま読みます。
Kaggle入門者へ タイタニックチュートリアルを比較してみた
この記事を参考に、様々な手法が用いられるのを確認しました。

まず最初に
【Kaggle初心者入門編】タイタニック号で生き残るのは誰?
上記のコードを一つずつ理解しながら打ち込んでいき、無事にcsvファイルを提出。
参考記事と同じ、0.71770のスコアを確認できました。
これをサンプルと呼ぶことにします。

次は自分でコードを変えていきます。
細かなことはリンク先を参照していただくとして割愛しますが、最初の提出分では’Age’の欠損値には中央値を入れています。
’Name’に含まれるMr.などの敬称の情報で年齢を推定できるとあったので、これに挑戦してみることにしました。
ここで、初心者あるあるにぶつかります。
コードが全部載っていないと真似できない・・・・・・

A Data Science Framework: To Achieve 99% Accuracy
kaggle/titanic 欠損値の補完と特徴量エンジニアリング
この2つの記事を参考にして進めました。そもそも見たことのないコードの書き方だと、どういう風にサンプルを変更していけば良いか分からないので、理解でき、納得して書けるコードを探しました。

まず、’Name’から’Title’を抽出し、新たに列名として追加します。

train['Title'] = train['Name'].str.split(", ", expand=True)[1].str.split(" ", expand=True)[0]

次に、主要な'Title'毎に格納し、'Age'の平均値を出します。

train_mr = train[train['Title'] == 'Mr.']
train_mr['Age'].dropna().mean()

'Mr.'の平均値は32.368.9.452261306
となりました。
この32という数値で、欠損したセルを埋めていきます。

train_mr['Age'] = train_mr['Age'].fillna(32)

さらに、元の学習データを補完していきます。

train['Age'][train['Title'] == 'Mr.' ] = train_mr['Age']

後は、サンプルと同様、決定木を用いて分析しています。

提出結果はというと、0.73205でした。
1.5%ほど良くなりました。

まとめ

・初心者はコードを真似て、Kaggleチュートリアルにサブミットすることができる。
・基本的なコードの書き方を知らないため、なかなか応用がきかない。
・ひたすら試行錯誤すればなんとかなる。
・とりあえず、現在の分析方法は、決定木しか分からない。

・'Age'は、平均値や中央値で埋めるより、'Title'から推定した方が結果が良くなる。

まだまだタイタニック号の課題への挑戦は続きます・・・・・・。

2
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6