【完全版】Kaggle入門！Titanicコンペでの体験記

# 【はじめに】
データ分析のスキルアップには、実践が一番です。その中でも、Kaggleは世界中のデータサイエンティストが競い合うプラットフォームで、様々なコンペが開催されています。今回は、初心者でも参加しやすいTitanicコンペについて、解説していきます。

# 目次
1. Titanicコンペの詳細
    - 問題の概要
    - データの概要
    - 評価指標
2. データの前処理
    - データの欠損値の処理
3. モデルの選択と学習
    - ロジスティック回帰
    - ランダムフォレスト
    - XGBoost
4. 提出データの作成
    - モデルの選択
    - データの前処理
    - モデルの学習と予測
    - 提出用ファイルの作成
5. 結論
    - Kaggleでの学びと今後の展望
    - まとめ
    - 参考文献

# 【1. Titanicコンペの詳細】
Titanicコンペでは、タイタニック号の乗客情報をもとに、乗客が生存するかどうかを予測する問題が出題されます。データには、乗客の性別や年齢、客室の等級などが含まれています。評価指標は、正解率（Accuracy）で、最終的にはテストデータに対する予測結果を提出します。

# 【2. データの前処理】
まずは、データの前処理を行います。データには、欠損値が含まれていたり、カテゴリ変数があったりするため、これらを適切に処理する必要があります。

# 【3. モデルの選択と学習】
次に、今回使用できる様々なモデルを考えます。Titanicコンペでは、ロジスティック回帰、ランダムフォレスト、XGBoostなどがよく使われます。それぞれのモデルで、交差検証などを行い、最適なモデルを選択します。

今回は、ランダムフォレストを使用したコードを紹介、解説します。

```python:タイタニック号-災害から学ぶ機械学習
import numpy as np
import pandas as pd
import os
# 今回使用する機械学習アルゴリズム
from sklearn.ensemble import RandomForestClassifier

# 入力ディレクトリの下にある全てのファイルをリストアップしています。
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

# Titanicのデータが保存されているフォルダにアクセスして、その中のtrain.csvとtest.csvを読み込んでいます。
train_data = pd.read_csv("/kaggle/input/titanic/train.csv")
# 読み込んだデータの先頭5行を表示
train_data.head()

test_data = pd.read_csv("/kaggle/input/titanic/test.csv")
# 読み込んだデータの先頭5行を表示
test_data.head()

# train_dataから目的変数である"Survived"を取り出してyに代入
y = train_data["Survived"]
# 生き残ったか否か("Survived")を予測する変数として"Pclass"、"Sex"、"SibSp"、"Parch"を選択
features = ["Pclass", "Sex", "SibSp", "Parch"]

# pd.get_dummies()を使ってカテゴリ変数を数値データに変換
X = pd.get_dummies(train_data[features])
X_test = pd.get_dummies(test_data[features])

# modelを設定して、学習を行い、predictionsにテストデータの生存予測結果を代入しています。
model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=1)
model.fit(X, y)
predictions = model.predict(X_test)

# outputに予測結果を保存して、submission.csvというファイル名でCSVファイルとして出力しています。
output = pd.DataFrame({'PassengerId': test_data.PassengerId, 'Survived': predictions})
output.to_csv('submission.csv', index=False)
print("Your submission was successfully saved!")
```
## コードの解説
上記のコードは、Titanicという船の沈没事故のデータを使って、乗客が生き残るかどうかを予測する機械学習モデルを作成するコードです。

まず、必要なライブラリを読み込んでいます。numpyとpandasはデータ解析によく使われるライブラリで、osはファイル操作に必要です。そして、Titanicのデータが保存されているフォルダにアクセスして、その中のtrain.csvとtest.csvを読み込んでいます。

次に、RandomForestClassifierという機械学習アルゴリズムを使って、モデルを作成しています。train_dataから目的変数である"Survived"を取り出してyに代入し、説明変数として"Pclass"、"Sex"、"SibSp"、"Parch"を選択し、pd.get_dummies()を使ってカテゴリ変数を数値データに変換しています。X_testも同様に、テストデータから説明変数を取り出して前処理しています。そして、modelを設定して、学習を行い、predictionsにテストデータの生存予測結果を代入しています。

最後に、outputというデータフレームに予測結果を保存して、submission.csvというファイル名でCSVファイルとして出力しています。

このコードを実行することで、Titanicのデータを使って機械学習モデルを作成し、予測結果を出力することができます。

以下のURLリンクは、Kaggleが公式でTitanicコンペについて解説している記事です。
また、予測結果の提出方法などについても解説しています。

https://www.kaggle.com/code/alexisbcook/titanic-tutorial/notebook

# 【4. 提出データの作成】
最終的には、テストデータに対する予測結果を提出します。この際には、選択したモデルに合わせて、データの前処理、学習などを行います。

# 【5. 結論】
Titanicコンペを通して、データ分析の基本的な流れや機械学習の基礎を学ぶことができます。また、Kaggleを通して、世界中のデータサイエンティストと交流することもでき、自分のスキルアップに繋がることも多いです。初めてKaggleに挑戦する方には、Titanicコンペはおすすめです。

また、KaggleはTitanicコンペ以外にも様々なコンペが開催されています。自分が興味を持つ分野のコンペに参加することで、より専門的な知識やスキルを身につけることもできます。さらに、コンペで上位入賞することで、自分の実力をアピールすることもできます。

今回は、Kaggleの入門としてTitanicコンペについて解説しました。初めてKaggleに挑戦する方には、まずはTitanicコンペに参加してみることをおすすめします。データの前処理や特徴量エンジニアリング、モデルの選択や学習、評価など、データ分析の基本的なスキルを身につけることができます。そして、Kaggleを通じて世界中のデータサイエンティストと交流し、自分のスキルアップに繋げていきましょう。

## 参考文献
https://www.kaggle.com/code/alexisbcook/titanic-tutorial/notebook

https://www.kaggle.com/competitions/titanic

https://youtu.be/-QuM_QAC748