본문 바로가기

머신러닝, 딥러닝

clf = RandomForestClassifier() 같이 변수를 설정해주는 이유

clf = RandomForestClassifier(max_depth=2, random_state=0)
clf.fit(X, y)

와 같이 xgb 라는 변수에 XGBRegressor() 와 같은 모델을 할당해주는 이유는

1) 코드를 읽기 쉽게 하고

2) 학습된 모델을 변수에 할당해 다른 데이터도 예측할 수 있도록 하고,

3) 만들어진 모델을 분석할 수 있게 하기 위해서이다.

predict(X), predict_proba(X), score(X, y)

등의 메소드를 clf.predict(X) 로 적용할 수 있다. 

y_pred = clf.predict(X_test)

RandomForestClassifier().fit(X, y).predict(X_test)

사실 위 코드를 이렇게 한 줄로 쓸 수도 있지만 바람직하지 않은 코드이다.

y_pred 변수를 생성하지 않았기 때문에, 결과를 보고 싶으면 매번 이 코드를 써야 하며
모델 자체가 변수로 들어가있지 않아 다른 데이터에 모델을 쓰거나, 모델을 분석할 수 없기 때문이다.

 

다른 예로, RandomizedSearchCV를 돌린 후 실행하는 다음 코드에서

print('최적 하이퍼파라미터: ', search.best_params_)
print('CV RMSE: ', -search.best_score_)
best_model = search.best_estimator_ # 가장 뛰어난 성능을 내는 모델을 변수로 할당)

가장 뛰어난 성능을 내는 best_estimator_를 best_model에 할당함으로써

위 모델을 다른 데이터셋에 재활용할 수 있게 된다. 

 

아래 파이프라인도 마찬가지이다.

pipe_xg = make_pipeline(
    OrdinalEncoder(),
    #SimpleImputer(), #xgboost에서는 결측치 처리 해줌
    model_xg)
  
# Fitting the model 
pipe_xg.fit(X_train, y_train) 

 

다른 모델을 사용할 때마다 변수명을 다르게 해 주면,

어떤 모델인지 손쉽게 구분하면서

한 데이터셋에 서로 다른 모델의 성능을 비교할 수 있다.

 

참조

파이썬 라이브러리를 활용한 머신러닝(번역개정판)

 

파이썬 라이브러리를 활용한 머신러닝

사이킷런 핵심 개발자에게 배우는 머신러닝 이론과 구현 현업에서 머신러닝을 연구하고 인공지능 서비스를 개발하기 위해 꼭 학위를 받을 필요는 없습니다. 사이킷런(scikit-learn)과 같은 훌륭한

www.yes24.com