타이타닉 데이터
캐글 튜토리얼 문제로서, Titanic에 타고 있었던 사람들의 승선정보를 바탕으로 생존자와 사망자를 예측하는 문제이다.
먼저 데이터가 어떻게 구성되어 있는지 살펴보자.
https://www.kaggle.com/c/titanic
- Survived : 0 = 사망, 1 = 생존
- Pclass : 1 = 1등석, 2 = 2등석, 3 = 3등석
- Sex : male = 남성, female = 여성
- Age : 나이
- SibSp : 타이타닉 호에 동승한 자매 / 배우자의 수
- Parch : 타이타닉 호에 동승한 부모 / 자식의 수
- Ticket : 티켓 번호
- Fare : 승객 요금
- Cabin : 방 호수
- Embarked : 탑승지, C = 셰르부르, Q = 퀸즈타운, S = 사우샘프턴
unique() 메소드를 사용하여, 데이터프레임의 속성을 쉽게 알아볼 수도 있다.
결측치 처리
Null값에는 머신러닝이 작동하지 않는다. 그래서 머신러닝에서는 결측치 처리가 중요하다.
- Age(탑승자 나이) - 평균값으로 대체
- Cabin(선실 번호) - N으로 대체
- Embarked(중간 정착 항구) - N으로 대체
fillna를 통하여, 널값을 채워 놓는다.
데이터 전처리
- Sex, Cabin, Embarked 속성을 숫자형으로 변경해 준다.
- Passengerid, Name, Ticket 등 불필요한 속성은 제거해준다.
모델링 및 평가
- 원본 데이터를 그대로 재로딩해서 X, y로 분리하고 DTC, KNN으로 생존자를 예측해 보자.
- GridSearchCV를 사용하면 최적의 파라미터와 최적의 스코어를 쉽게 구해볼 수 있다.
DecisionTreeClassifier
from sklearn.model_selection import train_test_split
import sklearn.metrics as mt
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV
X_train, X_test, y_train, y_test = train_test_split(X_titanic_df, y_titanic_df, test_size=0.2, random_state=24)
dt_clf = DecisionTreeClassifier()
parameters = {'max_depth':[2,3], 'min_samples_split':[2,3,4,5]}
grid_dtree = GridSearchCV(dt_clf, param_grid=parameters, cv=3)
grid_dtree.fit(X_train, y_train)
score = grid_dtree.score(X_test, y_test)
# score_df = pd.DataFrame(grid_dtree.cv_results_)
# score_df
print('best parameters : ', grid_dtree.best_params_)
print('best score : ', grid_dtree.best_score_)
score #81.0%
best parameters : {'max_depth': 3, 'min_samples_split': 2}
best score : 0.7962923566050893
0.8100558659217877
DTC를 사용하여 81.0%의 확률로 생존자를 예측하였다.
KNN
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
parameters = {'n_neighbors':[1,2,3, 4, 5 , 6, 7]}
grid_knn = GridSearchCV(knn, param_grid=parameters, cv=3)
grid_knn.fit(X_train, y_train)
score = grid_knn.score(X_test, y_test)
# score_df = pd.DataFrame(grid_dtree.cv_results_)
# score_df
print('best parameters : ', grid_knn.best_params_)
print('best score : ', grid_knn.best_score_)
score
73.7
KNN를 사용하여 73.7%의 확률로 생존자를 예측하였다.
DecisionTree로 모델링 해 본 결과, 81.0%의 정확도로 KNN(73.7%) 모델링보다 좀 더 높은 정확도를 보였다.
'플레이데이터 빅데이터 부트캠프 12기 > 머신러닝 & 딥러닝' 카테고리의 다른 글
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 Ensemble (0) | 2022.08.05 |
---|---|
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 회귀(Regression)(2) (0) | 2022.08.05 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 회귀(Regression)(1) (0) | 2022.08.04 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 머신 러닝 기초(2) (0) | 2022.08.03 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 머신 러닝 기초(1) (0) | 2022.08.01 |