こんにちはあつきです🎶
(((o(゚▽゚)o)))今回はKaggleの超有名コンペ「Titanic: Machine Learning from Disaster」に挑戦してみたので、その流れや学びを共有します。
Pythonを使って、データの読み込みからモデル構築、予測までの基本的な流れを紹介します。初学者の方が、実際に手を動かしながら学べるように構成しました。
🎯 1. Kaggleとは?
Kaggleは、世界中のデータサイエンティストが集まるデータ分析コンペのプラットフォームです。Titanicコンペは初心者向けに設計されていて、最初の一歩に最適です。
🛳️ 2. Titanicコンペの概要
1912年に沈没した豪華客船「タイタニック号」の乗客データを使って、生存者を予測するコンペです。
目的:乗客の属性(性別、年齢、乗船クラスなど)をもとに、生存したかどうかを予測する。
🔧 3. 実装ステップ
3.1 ライブラリのインポート
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
3.2 データの読み込み
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
3.3 データの確認
print(train.head())
print(train.info())
3.4 前処理(簡易版)
# 欠損値処理
train['Age'].fillna(train['Age'].median(), inplace=True)
train['Embarked'].fillna(train['Embarked'].mode()[0], inplace=True)
# カテゴリ変換
train['Sex'] = train['Sex'].map({'male': 0, 'female': 1})
train['Embarked'] = train['Embarked'].map({'S': 0, 'C': 1, 'Q': 2})
3.5 特徴量と目的変数の選定
features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']
X = train[features]
y = train['Survived']
3.6 モデル構築と学習
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X, y)
3.7 テストデータの前処理と予測
test['Age'].fillna(train['Age'].median(), inplace=True)
test['Fare'].fillna(train['Fare'].median(), inplace=True)
test['Sex'] = test['Sex'].map({'male': 0, 'female': 1})
test['Embarked'] = test['Embarked'].map({'S': 0, 'C': 1, 'Q': 2})
X_test = test[features]
predictions = model.predict(X_test)
3.8 提出用ファイルの作成
submission = pd.DataFrame({
'PassengerId': test['PassengerId'],
'Survived': predictions
})
submission.to_csv('submission.csv', index=False)
📈 4. 結果と感想
提出してみると、スコアは 約0.765 でした。これは単純な特徴量とモデルでもそこそこの精度が出せることを示しています。
実際のデータ分析では、前処理や特徴量エンジニアリングが大きな差を生みます。
🚀 5. 今後の改善ポイント
- カテゴリ変数のOne-Hot Encoding
- 年齢や名前の分布の可視化・分析
- 他のモデル(XGBoostやLightGBMなど)との比較
- 交差検証による過学習の抑制
📝 6. まとめ
KaggleのTitanicコンペは、機械学習の入門にぴったりな教材です。
簡単な前処理とランダムフォレストを使っても、ある程度の予測精度を出せることがわかりました。最初の一歩として、自分なりに手を動かしてみることが大切です。
🙌 最後に
この記事が、KaggleやPythonによるデータ分析に挑戦してみたい方の後押しになれば幸いです。
ご質問やフィードバックがあれば、ぜひコメントで教えてください!
Thanks for reading 😊