반응형
지난 포스팅에서 우리는 타이타닉 데이터셋에 대한 간단한 탐색적 데이터 분석을 수행했습니다. 이번 에피소드에서는 실제로 머신러닝 모델을 학습시키기 위한 데이터 전처리 과정과 모델 학습을 진행해보겠습니다.
✅ 1. 결측치 처리 (Missing Values)
타이타닉 데이터셋에는 다음과 같은 결측치가 존재합니다:
- Age: 나이 정보가 일부 없음
- Embarked: 승선 항구 정보가 일부 없음
- Fare: 테스트 데이터셋에 일부 없음
이러한 결측치는 단순한 통계치로 대체해주겠습니다.
train['Age'].fillna(train['Age'].median(), inplace=True)
train['Embarked'].fillna(train['Embarked'].mode()[0], inplace=True)
test['Age'].fillna(train['Age'].median(), inplace=True)
test['Fare'].fillna(train['Fare'].median(), inplace=True)
💡 median()은 중간값, mode()는 최빈값으로 결측치를 채워 넣는 전형적인 방식입니다.
✅ 2. 범주형 변수 숫자 변환 (Categorical Encoding)
머신러닝 모델은 문자열 데이터를 직접 다루지 못합니다. 따라서 Sex, Embarked와 같은 문자열 데이터를 숫자로 변환해줘야 합니다.
train['Sex'] = train['Sex'].map({'male': 0, 'female': 1})
test['Sex'] = test['Sex'].map({'male': 0, 'female': 1})
train['Embarked'] = train['Embarked'].map({'S': 0, 'C': 1, 'Q': 2})
test['Embarked'] = test['Embarked'].map({'S': 0, 'C': 1, 'Q': 2})
✅ 3. 모델 학습을 위한 준비
학습에 사용할 특징(Feature) 컬럼을 선택하고, 정답(Label)을 분리합니다.
features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']
X = train[features]
y = train['Survived']
학습용 데이터와 검증용 데이터를 나눕니다:
from sklearn.model_selection import train_test_split
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.2, random_state=42)
✅ 4. Random Forest 모델 학습 및 평가
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
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))
📌 저의 경우 약 0.82 정도의 검증 정확도를 얻을 수 있었습니다.
🔜 다음 에피소드 예고
다음 포스트에서는 테스트 데이터셋에 이 모델을 적용하여 생존 여부를 예측하고, Kaggle 제출용 파일을 생성해보겠습니다.
감사합니다 🙌
➡️ 이어서 보기: [#4 - 제출 파일 생성 및 Kaggle 업로드 (예정)]
반응형
'04. 캐글' 카테고리의 다른 글
| 00009. [KAG-001] Titanic 생존자 예측 #5 - 특성 공학으로 성능 끌어올리기 (1) | 2025.04.04 |
|---|---|
| 00008. [KAG-001] Titanic 생존자 예측 #4 - 제출 파일 생성 및 Kaggle 업로드 (0) | 2025.04.04 |
| 00006. 🚢 [KAG-00001] Titanic 생존자 예측 #2 - 데이터 탐색(EDA) (0) | 2025.03.19 |
| 00005. [KGL-00001] Titanic 생존자 예측 #1 - 계획 세우기 🚢 (0) | 2025.03.10 |
| 00004. 캐글 초보자가 도전할 만한 대회 추천 🚀 (0) | 2025.03.10 |