의사결정 나무의 과적합 취약성과 불안정성을 보완하기 위한 아이디어로, 트리 여러 개를 결합하여 숲(forest)를 만드는 것.
머신러닝의 데이터 부족 문제를 해결하기 위한 Bootstrapping + Aggregating 방법론


sklearn.ensemble.RandomForestClassifiersklearn.ensemble.RandomForestRegressor
# 로지스틱회귀, 의사결정나무, 랜덤포레스트
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score,f1_score
model_lor = LogisticRegression()
model_dt = DecisionTreeClassifier(random_state=42)
model_rf = RandomForestClassifier(random_state=42)
model_lor.fit(X,y)
model_dt.fit(X,y)
model_rf.fit(X,y)
y_lor_pred = model_lor.predict(X)
y_dt_pred = model_dt.predict(X)
y_rf_pred = model_rf.predict(X)
def get_score(model_name, y_true, y_pred):
acc = round(accuracy_score(y_true, y_pred), 3)
f1 = round(f1_score(y_true,y_pred), 3)
print(model_name, 'acc 스코어는: ',acc, 'f1_score는: ', f1)
get_score('lor',y,y_lor_pred)
get_score('dt',y,y_dt_pred)
get_score('rf',y,y_rf_pred)
# lor acc 스코어는: 0.8 f1_score는: 0.732
# dt acc 스코어는: 0.88 f1_score는: 0.833
# rf acc 스코어는: 0.88 f1_score는: 0.836
X_features
# ['Pclass', 'Sex', 'Age']
model_rf.feature_importances_
# array([0.17077185, 0.40583981, 0.42338834])