Eggs Sunny Side Up
본문 바로가기
Computer Engineering/머신러닝

타이타닉 데이터 실습_앙상블

by guswn100059 2023. 6. 15.
### 전처리된 데이터 파일 불러오기

import pandas as pd

X_train = pd.read_csv('./X_train.csv')
X_test = pd.read_csv('./X_test.csv')
y_train = pd.read_csv('./y_train.csv')

X_train.shape, X_test.shape, y_train.shape

- 머신러닝에서 점수(성능)를 높이기 위해서 할 수 있는 것
1. 좋은 데이터를 구하기
2. 데이터에 맞는 모델 찾기
3. 하이퍼 파라미터 튜닝

### 앙상블 모델 사용하기
- 머신러닝에서 성능이 좋은 모델
- 여러 개의 DecisionTree를 사용하는 모델

#### RandomForest 모델 사용

from sklearn.ensemble import RandomForestClassifier

# 50개의 결정트리를 통해서 RandomForest 모델 생성
forest_model = RandomForestClassifier(n_estimators=50)

##### 교차검증

import warnings
warnings.filterwarnings('ignore')

from sklearn.model_selection import cross_val_score
cross_val_score(forest_model, X_train, y_train, cv=5).mean()

#### 하이퍼 파라미터 튜닝

# n_estimators=50, max_features=0.5, max_depth=4
forest_model = RandomForestClassifier(n_estimators=50, max_features=0.5, max_depth=4)
# max_features : 0 ~ 1 사이의 값, 대개 0.3 ~ 0.7 값을 사용

# GridSearchCV 사용 => Why? ∵ 아래 나열한 하이퍼 파라미터들의 최적의 조합을 찾기 위해서
# n_estimators = [50, 70, 90, 110, 130, 150]
# max_features = [0.3, 0.4, 0.5, 0.6, 0.7]
# max_depth = [3, 4, 5, 6, 7, 8]

from sklearn.model_selection import GridSearchCV

param = {
    'n_estimators' : [50, 70, 90, 110, 130, 150],
    'max_features' : [0.3, 0.4, 0.5, 0.6, 0.7],
    'max_depth' : [3, 4, 5, 6, 7, 8]
}

grid_model = GridSearchCV(RandomForestClassifier(), param, cv=5, verbose=3)
# verbose : 학습되는 중간과정을 확인해주는 속성

grid_model.fit(X_train, y_train)

grid_model.best_params_

grid_model.best_score_

# GridSearchCV로 찾은 최적의 하이퍼 파라미터를 적용한
# RandomForest 모델을 만들고 
from sklearn.ensemble import RandomForestClassifier
forest_model = RandomForestClassifier(max_depth=8, max_features=0.5, n_estimators=70)

# 학습을 진행하고
forest_model.fit(X_train, y_train)

# 예측 답안을 만들어서
pre = forest_model.predict(X_test)
gender_sub = pd.read_csv('./data/titanic/gender_submission.csv')
gender_sub['Survived'] = pre

# Kaggle에 업로드 - 예측값 내보내기
gender_sub.to_csv('phjsub03.csv', index=False)

'Computer Engineering > 머신러닝' 카테고리의 다른 글

선형회귀  (0) 2023.06.16
Ensemble 유방암 데이터 분류 실습  (0) 2023.06.15
타이타닉 데이터 분류  (0) 2023.06.13
Decision Tree_버섯데이터 분류 실습  (0) 2023.06.08
KNN-iris 분류 실습  (2) 2023.06.07

댓글