본문 바로가기

머신러닝

머신러닝 분류 Classification 중 Decision Tree(결정 트리)

분류는 데이터를 피쳐값과 타겟 값(레이블 값)으로 나누어서 피쳐에 따라 타겟값의 값을 예측하는 것이다. 기존 데이터들을 이용해서 어떠한 피쳐에서는 어떠한 타겟 값들이 나올 것인가를 학습한 다음에 새로운 데이터 값이 주어지면 타겟값을 예측한다.

 

분류는 여러가지 알고리즘이 있는데 그 중 이때까지 배운것은 

-Decision Tree

-Logistic Regression

-Ensemble

이 세가지 정도이다. 

 

오늘은 결정 트리에 대해서 학습해보고자 한다.

데이터는 캐글의 

www.kaggle.com/teejmahal20/airline-passenger-satisfaction

 

Airline Passenger Satisfaction

What factors lead to customer satisfaction for an Airline?

www.kaggle.com

데이터로 이용하였다.

앞에 데이터 나누기 등은 생략하였다.

from sklearn.compose import ColumnTransformer
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV

num_pipeline = Pipeline(steps=[
                         ('imputer', SimpleImputer(strategy='mean'))
])

dtc = DecisionTreeClassifier()
parameters = {
            'classifier__max_depth':[None, 1, 2],
            'classifier__min_samples_split':[1, 2]
}
tree_pipeline = Pipeline(steps=[('num_pipeline', num_pipeline),
                                ('classifier', dtc)])
                                
grid_tree = GridSearchCV(estimator=tree_pipeline, param_grid=parameters, cv=2, refit=True)
grid_tree.fit(X_train, y_train)

print(grid_tree.best_estimator_)

y_val_pred = grid_tree.predict(X_val)
y_val_pred_proba = grid_tree.predict_proba(X_val)[:, 1]
grid_tree.score(X_val, y_val)

from sklearn.metrics import classification_report

print(classification_report(y_val, y_val_pred))

roc_score = roc_auc_score(y_val, y_val_pred_proba)

print('ROC_AUC', roc_score)