출처: https://astrocosmos.tistory.com/202 [ASTROCOSMOS:티스토리] 지도 학습] 분류 - 결정트리 DecisionTreeClassifier :: 하나둘셋넷
728x90

지도 학습 분류 문제

결정나무 분류

  1. 환경 준비
  2. 데이터 이해
  3. 데이터 준비
  4. 모델링
  5. 기타
  • graphviz
  • 변수 중요도
1. 환경준비
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings

warnings.filterwarnings(action='ignore')
%config InlineBackend.figure_format = 'retina'

# 데이터 읽어오기
data = pd.read_csv(path)
 
2. 데이터 이해
data.head()
data.describe()
data['컬럼명'].value_counts()
data.corr()
 
3. 데이터 준비
1) x, y 분리
target = '타겟 컬럼'

x = data.drop(target, axis = 1)
y = data.loc[:, target]

2) 학습용, 평가용 데이터 분리
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state=1)
 
4. 모델링
# 1단계
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import confusion_matrix, classification_report

# 2단계 선언하기
model = DecisionTreeClassifier(max_depth=5, random_state=1

# 3단계 학습하기
model.fit(x_train, y_train)

# 4단계 예측하기
y_pred = model.predict(x_test)

# 5단계 평가하기
print( confusion_matrix(y_test, y_pred) )
print( classification_report(y_test, y_pred) )
 
graphviz
# 시각화 모듈
from sklearn.tree import export_graphviz
from IPython.display import Image

# 이미지 파일
export_graphviz( model,
                            out_file = 'tree.dot',
                            feature_names = x.columns,
                            class_names = ['No', 'Yes'],
                            rounded = True,
                            precision = 2,
                            filled = True)
# 파일 변환
!dot tree.dot -Tpng -otree.png -Gdpi=300

# 이미지 파일 표시
Images(filename = 'tree.png')
 
변수 중요도 시각화
plt.figure(figsize=(5,5))
plt.barh(list(x), model.feature_importances_ )
plt.show()

 

728x90

+ Recent posts