본문 바로가기
통계데이터과학과

[캐글] Titanic: Machine Learning from Disaster

by 공부하는노년 2025. 11. 9.
반응형

캐글의 대표 입문 대회인 Titanic: Machine Learning from Disaster를 예시로
참가 → 데이터 분석 → 예측 제출의 전체 과정을 단계별로 안내드리겠습니다.


🚢 1단계. 대회 참가 및 환경 준비

  1. 캐글 로그인
    • https://www.kaggle.com/competitions/titanic 접속
    • 오른쪽 상단의 Join Competition 버튼 클릭
    • 약관(‘I Understand and Accept’) 동의 후 참가 완료
  2. 노트북 환경 설정
    • 메뉴에서 “Code” → “New Notebook” 선택
    • “Add Data” 버튼을 눌러 titanic 데이터셋 추가
    • 언어는 Python, 환경은 GPU Off / Internet Off 설정으로 충분

 


📊 2단계. 데이터 확인 (EDA: 탐색적 데이터 분석)

Titanic 데이터에는 세 가지 주요 CSV 파일이 있습니다:

파일 설명
train.csv 생존 여부가 포함된 학습용 데이터
test.csv 생존 여부 없이 예측해야 할 데이터
gender_submission.csv 제출 예시 파일 (샘플)

주요 열(column):

  • PassengerId: 승객 번호
  • Survived: 생존 여부 (0=사망, 1=생존)
  • Pclass: 선실 등급 (1, 2, 3)
  • Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked

📘 예시 코드:

import pandas as pd

train = pd.read_csv("/kaggle/input/titanic/train.csv")
test = pd.read_csv("/kaggle/input/titanic/test.csv")

train.head()
train.info()
train.describe()

🧹 3단계. 데이터 전처리

  • 결측치(NaN) 처리
  • 범주형 변수(예: Sex, Embarked)를 숫자로 변환
  • 필요 없는 열 제거

📘 예시 코드:

train['Age'].fillna(train['Age'].median(), inplace=True)
train['Embarked'].fillna('S', inplace=True)
train['Sex'] = train['Sex'].map({'male':0, 'female':1})
train['Embarked'] = train['Embarked'].map({'S':0, 'C':1, 'Q':2})

🧠 4단계. 모델 학습 (예: 랜덤포레스트)

📘 예시 코드:

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

features = ['Pclass', 'Sex', 'Age', 'Fare', 'Embarked']
X = train[features]
y = train['Survived']

X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.2, random_state=42)

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

preds = model.predict(X_valid)
print("정확도:", accuracy_score(y_valid, preds))

📤 5단계. 예측 결과 제출

📘 예시 코드:

test['Sex'] = test['Sex'].map({'male':0, 'female':1})
test['Embarked'] = test['Embarked'].map({'S':0, 'C':1, 'Q':2})
test['Age'].fillna(train['Age'].median(), inplace=True)
test['Fare'].fillna(train['Fare'].median(), inplace=True)

X_test = test[features]
predictions = model.predict(X_test)

output = pd.DataFrame({'PassengerId': test.PassengerId, 'Survived': predictions})
output.to_csv('submission.csv', index=False)

그다음 Kaggle 페이지에서
➡️ “Submit Predictions” → submission.csv 파일 업로드 → 자동 채점 후 리더보드에 점수 표시됩니다.


📈 6단계. 다음 목표

Titanic 대회는 머신러닝 입문용이므로 이후 단계로 다음을 권장드립니다:

  • House Prices 대회 (회귀 문제 실습)
  • Digit Recognizer (MNIST) (딥러닝 실습)
  • Feature EngineeringHyperparameter Tuning 연습

 

댓글