본문 바로가기

머신러닝

머신러닝 - ex09_1_XGB,LGBM

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, 결정 트리, 랜덤 포레스트 모델에 그리드 서치를 적용하는 코드입니다.

  1. iris 데이터를 가져와 학습 데이터와 테스트 데이터로 분할합니다.
  2. KNN 모델에 그리드 서치를 적용합니다. 검색할 하이퍼 파라미터는 n_neighbors이며,
    범위는 1~10으로 설정되어 있습니다.
  3. 결정 트리 모델에 그리드 서치를 적용합니다. 검색할 하이퍼 파라미터는
    max_depth, max_leaf_nodes, min_samples_leaf이며, 각각의 범위는 정의되어 있습니다.
  4. 랜덤 포레스트 모델에 그리드 서치를 적용할 예정입니다.

그리드 서치를 적용한 모델의 검색 결과인 하이퍼 파라미터,
최고 교차 검증 점수, 최고 성능 모델을 출력합니다.