### 전처리된 데이터 파일 불러오기
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 |
댓글