RandomForest 개념 정의
랜덤포레스트(RandomForest)란 머신러닝에서 널리 사용하는 앙상블(Ensemble) 방법 중 하나로 여러 개의 트리를 조합하여 예측하는 모델이다.
랜덤포레스트는 부트스트래핑(Bootstrapping)과 배깅(Bagging)을 기반으로한다.
부트스트래핑(Bootstrapping)이란 현재 보유하고 있는 데이터 셋으로 다른 데이터 셋틀 만드는 방법이다.
배깅이란 Bootstrap aggregating으로 여러개의 모델을 독립적으로 학습한 후 그 결과를 투표한 결과를 종합하는 방법이다.
Scikit-learn RandomForest import
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
sklearn.datasets 모듈에서 load_iris 함수를 사용하여 붓꽃 데이터셋을 로드
sklearn.model_selection 모듈에서 train_test_split 함수를 로드
sklearn.ensemble 모듈에서 RandomForestClassifier 로드
sklearn.metrics 모듈에서 accuracy_score 함수 로드
Data load & train test split
data = load_iris()
X, y = data.data, data.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
붓꽃 데이터셋을 X와 y에 할당
X는 학습 데이터
y는 학습 데이터에 대한 클래스 레이블(Labels)
Model
clf = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42).fit(X_train, y_train)
n_estimators: 랜덤 포레스트에서 사용할 트리의 개수를 지정하는 매개변수
max_depth: 결정 트리의 최대 깊이를 제한하는 매개변수
random_state: 항상 같은 결과를 얻을 수 있도록 랜덤 시드를 고정
fit: X_train과 y_train 학습
X_train: 학습 데이터
y_train: 학습 데이터에 대한 레이블
Predict
y_pred = clf.predict(X_test)
학습된 모델을 사용하여 X_test 데이터에 대한 예측
Accuracy
score = accuracy_score(y_test, y_pred)
print('Random Forest Accuracy Score: ', score)
accuracy_score: 정확도를 계산하는함수
RandomForest 전체 코드
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
data = load_iris()
X, y = data.data, data.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
clf = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42).fit(X_train, y_train)
y_pred = clf.predict(X_test)
score = accuracy_score(y_test, y_pred)
print('Random Forest Accuracy Score: ', score)
'파이썬 > scikit-learn' 카테고리의 다른 글
RandomForest 중요도 시각화 (0) | 2023.08.22 |
---|