분류는 데이터를 피쳐값과 타겟 값(레이블 값)으로 나누어서 피쳐에 따라 타겟값의 값을 예측하는 것이다. 기존 데이터들을 이용해서 어떠한 피쳐에서는 어떠한 타겟 값들이 나올 것인가를 학습한 다음에 새로운 데이터 값이 주어지면 타겟값을 예측한다.
분류는 여러가지 알고리즘이 있는데 그 중 이때까지 배운것은
-Decision Tree
-Logistic Regression
-Ensemble
이 세가지 정도이다.
오늘은 결정 트리에 대해서 학습해보고자 한다.
데이터는 캐글의
www.kaggle.com/teejmahal20/airline-passenger-satisfaction
데이터로 이용하였다.
앞에 데이터 나누기 등은 생략하였다.
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)
'머신러닝' 카테고리의 다른 글
[파이썬 머신러닝] 배깅 방식의 랜덤 포레스트 학습 (0) | 2021.02.24 |
---|---|
[파이썬 머신러닝] 머신러닝의 분류-앙상블 학습 (0) | 2021.02.24 |
GridSearchCV의 Check the list of available parameters with `estimator.get_params().keys()` 에러 발생시 해결법 (0) | 2021.02.24 |
[파이썬 머신러닝]Pipeline 파이프라인 구축하기 (1) | 2021.02.24 |
[파이썬 머신러닝] map으로 레이블 인코딩 하기 (0) | 2021.02.22 |