TIL & WIL/Machine Learning

0502. 범주형 데이터/ One-Hot-Encoding(pd.get_dummies)/ RandomForest

니츄 2023. 3. 13. 23:03

📝 모델의 성능 개선하기

  • train_test_split() : 데이터셋 나누기
  • pd.get_dummies() : One-Hot-Encoding
  • RandomForestClassifier

 

 

 

 

📝 One-Hot-Encoding

  • pd.get_dummies() 사용.
X = pd.get_dummies(X_raw)
  • Ordinal encoding & One hot encoding  :  범주형 변수를 수치형으로 변환하는 방법
  • Ordinal encoding :  범주형 변수에 정해진 순서나 등급이 있을 때 사용.  => 모델학습에 문제발생 가능성 O
  • One hot encoding : 범주형 변수의 모든 값을 이진수(binary)로 표현.   => 데이터 양 증가

 

 

 

 

 

📝 train과 test 데이터 나누기 : train_test_split()

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                    stratify=y,
                                                   test_size=0.2,
                                                   random_state=42)
  • train, test 어느 한 쪽이 더 많고 적고 하면 안 됨.
  • 정답의 비율이 train, test가 비슷하게 나뉘도록 해주는 것이 stratify의 기능
  • 클래스를 균형있게 나눠주면 학습과 예측에 도움이 된다.

 

 

 

 

 

📝 RandomForest로 예측하기

  • n_estimators : 숲에 있는 나무의 수.  ( int타입  / default=100 )
  • criterion : 분할의 품질을 측정하는 피처.  ( { 'gini', 'entropy', 'log_loss' }  /  default='gini' )
  • max_depth : 트리의 최대 깊이.  ( int타입  /  default=None )
  • min_samples_split : 내부 노드를 분할하는 데 필요한 최소 샘플 수  ( int 혹은 float 타입  /  default=2 )
  • max_features : 최상의 분할을 찾을 때 고려해야 할 피처의 수  (int 혹은 float 타입  /  { 'auto', 'sqrt', 'log2' }  / default='auto' )
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(random_state=42)

# 학습하기
model.fit(X_train, y_train)

# 실행하기
y_predict=model.predict(X_test)

# 정확도 평가하기
# 정확도(accuracy)는 성능 평가 기준 중 하나로, 전체 샘플 중에서 올바르게 예측한 샘플 수를 의미합니다.
(y_test == y_predict).mean()

# 모델 평가하기
# feature_importances_ 를 통해 모델의 피처 중요도를 추출합니다.
fi = pd.DataFrame(model.feature_importances_)
fi.index = model.feature_names_in_
fi = fi.sort_values(by=0)

 

 

 

 

※ 공부 마무리 : 주요 파라미터 알아두기 !

※ 더 알아볼 개념 : 랜덤포레스트

 

랜덤 포레스트란 무엇입니까?

홈 Reference Center 관련 용어 랜덤 포레스트란 무엇입니까? 랜덤 포레스트는 지도 머신 러닝 알고리즘입니다. 정확성, 단순성 및 유연성으로 인해 가장 많이 사용되는 알고리즘 중 하나입니다. 분

www.tibco.com

잠들기 전에 읽어보기 !