일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 벚꽃개화시기
- 구글애널리틱스
- 프로그래머스
- 티스토리
- 알파줄거리
- GA
- 독서
- GA4
- 얼음여왕
- 미라클 모닝
- 수명예측 인공지능
- 영화 올드 줄거리
- 니다
- 데이터 분석
- 채용공고
- 구글애널리틱스4
- ㅂㅂ
- Python
- 기사스크랩
- 코딩
- 명상
- 6시 기상
- 데이터문해력
- Google Analytics
- 감사인사
- 벚꽃
- 코오롱베네트
Archives
- Today
- Total
Data Analyst KIM
[ML] 2. Model Selection 모듈 소개(train_test_split,교차검증,그리드서치) 본문
반응형
사이킷런의 Model Selection 모듈에서 제공하는 기능
- 학습 데이터와 테스트 데이터 세트 분리
- 교차 검증 분할 및 평가
- 하이퍼 파라미터 튜닝
1. 학습 데이터와 테스트 데이터 세트 분리
데이터를 분리하기 위해서는 train_test_split을 사용을 해야한다.
X_train, X_test, y_train, y_test로 나누게 된다. 그 이유는 정확도를 계산 하려면 실제 값과 같은지 다른지를 파악해야하기 때문이다.
X_train과 y_train로 학습을 한다. 여기서 feature는 X_train이 되고 Target은 y_train이 된다.
모델링에서 학습을 한 후 X_test를 이용하여 예측을 수행한다. 예측 결과와 y_test를 비교하여 정확도를 계산한다.
기본 코드는 다음과 같다. 여기서 test_size=0.3은 30% test데이터로 사용하겠다는 의미이다.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris_data.data, iris_data.target,
test_size=0.3, random_state=121)
iris 데이터를 분리하고 의사결정나무로 모델링 한 후 정확도를 구해보자.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
iris_data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris_data.data, iris_data.target,
test_size=0.3, random_state=121)
dt_clf = DecisionTreeClassifier( )
dt_clf.fit(X_train, y_train)
pred = dt_clf.predict(X_test)
print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test,pred)))
하이퍼 파라미터 튜닝(GridSearchCV)
사이킷런은 GridSearchCV를 이용해 하이퍼 파라미터를 순차적으로 입력하면서 편리하게 최적의 파라미터를 도출할 수 있는 방안을 제공한다.
의사결정 나무로 모델링을 해보자. 여기서 몇 개의 가지가 가장 정확도가 높은지 모른다.
GridSearchCV를 사용하여 정확도를 높이는 하이퍼 파라미터 튜닝을 해보자.
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
iris_data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris_data.data, iris_data.target,
test_size=0.2, random_state=121)
dtree = DecisionTreeClassifier() # 트리 생성
parameters = {'max_depth':[1,2,3], 'min_samples_split':[2,3]} # 파라미터 입력
grid_dtree = GridSearchCV(dtree, param_grid=parameters, cv=3, refit=True) # 그리드 서치
grid_dtree.fit(X_train, y_train)
print('GridSearchCV 최적 파라미터:', grid_dtree.best_params_)
print('GridSearchCV 최고 정확도: {0:.4f}'.format(grid_dtree.best_score_))
훈련된 모델에 새로운 데이터가 들어왔을 때의 정확도를 파악해보자.
estimator = grid_dtree.best_estimator_
pred = estimator.predict(X_test)
print('테스트 데이터 세트 정확도: {0:.4f}'.format(accuracy_score(y_test,pred)))
반응형
'데이터 분석 > ML&DL&NLP' 카테고리의 다른 글
[Deep Learning] 오토인코더(Auto-Encoder)란 무엇인가? (0) | 2023.10.26 |
---|---|
[Deep Learning] GAN이란 무엇인가? (0) | 2023.10.26 |
[Deep Learning] Attention을 사용한 신경망 (0) | 2023.10.26 |
[Deep Learning] RNN,LSTM의 개념 및 로이터 뉴스 카테고리 분류하기 (0) | 2023.10.26 |
[ML] 1. 사이킷런 기반의 프레임워크 (0) | 2023.10.04 |