import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# KNN 모델
from sklearn.neighbors import KNeighborsClassifier
# 결정트리 모델
from sklearn.tree import DecisionTreeClassifier
# 랜덤포레스트 모델
from sklearn.ensemble import RandomForestClassifier
# iris 데이터
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 그리드 서치 임포트
from sklearn.model_selection import GridSearchCV
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris['data'],
iris['target'],
test_size = 0.3,
random_state = 3)
X_train.shape, X_test.shape, y_train.shape, y_test.shape
### KNN 모델에 그리드 서치 적용
param_knn = {"n_neighbors":range(1,10,1)}
# GridsearchCV(모델,하이퍼파라미터 및 범위 , 교차검증 수)
grid_search_knn = GridSearchCV(KNeighborsClassifier(),param_knn, cv =10)
grid_search_knn.fit(X_train,y_train)
import warnings
warnings.filterwarnings('ignore')
print("최적의 하이퍼 파라미터 : ",grid_search_knn.best_params_)
print("최고 교차 검증 점수 (정확도) : ",grid_search_knn.best_score_)
# 최고 서능 모델은 grid_search_knn 객체에 저장되어 있기 때문에 쓰지 않아도 됨
print("최고 성능 모델 :",grid_search_knn.best_estimator_)
grid_search_knn.score(X_test,y_test)
### 디시전트리 모델에 그리드 서치 적용
- max_depth 범위: range(1,5,1)
- max_leaf_node 범위 : range(1,50,10)
- min_samples_leaf 범위 : range(1,150,10)
param_deci = {"max_depth" : range(1,5,1), # 1 2 3 4 5
"max_leaf_nodes":range(1,50,10), # 1 11 21 31 41
"min_samples_leaf":range(1,150,10)} # 1 11 21 31...141
grid_search_deci = GridSearchCV(DecisionTreeClassifier(),param_deci,cv=10)
grid_search_deci.fit(X_train,y_train)
print("최적의 하이퍼 파라미터 : ",grid_search_deci.best_params_)
print("최고 교차 검증 점수 (정확도) : ",grid_search_deci.best_score_)
# 최고 서능 모델은 grid_search_deci 객체에 저장되어 있기 때문에 쓰지 않아도 됨
print("최고 성능 모델 :",grid_search_deci.best_estimator_)
### 랜덤 포레스트 모델에 그리드 서치 적용
- n_estimators : ranget(1,20,5)
위에랑 똑같이 하면 된다
RandomForestClassifier?
이 코드는 사이킷런의 KNN, 결정 트리, 랜덤 포레스트 모델에 그리드 서치를 적용하는 코드입니다.
- iris 데이터를 가져와 학습 데이터와 테스트 데이터로 분할합니다.
- KNN 모델에 그리드 서치를 적용합니다. 검색할 하이퍼 파라미터는 n_neighbors이며,
범위는 1~10으로 설정되어 있습니다. - 결정 트리 모델에 그리드 서치를 적용합니다. 검색할 하이퍼 파라미터는
max_depth, max_leaf_nodes, min_samples_leaf이며, 각각의 범위는 정의되어 있습니다. - 랜덤 포레스트 모델에 그리드 서치를 적용할 예정입니다.
그리드 서치를 적용한 모델의 검색 결과인 하이퍼 파라미터,
최고 교차 검증 점수, 최고 성능 모델을 출력합니다.
'머신러닝' 카테고리의 다른 글
머신러닝 - ex09_3선형분류,뷴류평가지표 (0) | 2023.02.15 |
---|---|
머신러닝 - ex09_2선형회귀(LinearRegression) (0) | 2023.02.15 |
머신러닝 - ex07_그리드서치 (0) | 2023.02.15 |
머신러닝 - 캐글 집값 예측분석 (0) | 2023.02.15 |
머신러닝 - ex06_타이타닉_앙상블모델 (0) | 2023.02.15 |