간단한 의사결정나무 만들기
이번 실습에서는 이론 자료에서 나왔던 항공 지연 데이터를 기반으로 간단한 의사결정나무를 구현해 보겠습니다.
항공 지연 데이터는 아래와 같습니다.

풍속에 따른 지연 여부를 알아내기 위하여 의사결정나무인 binary_tree의 기준값(threshold)을 변경해가며 완벽하게 지연 여부를 분리할 수 있는 모델을 만들어봅시다.

지시사항
- binary_tree 함수는 입력하는 threshold 풍속을 기준으로 지연 여부를 예측한 결과를 DataFrame 형태로 출력합니다. data의 지연 여부와 예상 지연 여부가 같은 값이 나오도록 의사결정나무의 결과물을 data_pred에 저장하세요.
- threshold 에 원하는 값을 넣어서 결과를 확인합니다. (ex) 1, 2, 3.5, …)
import pandas as pd
# 풍속을 threshold 값에 따라 분리하는 의사결정나무 모델 함수
def binary_tree(data, threshold):
yes = []
no = []
# data로부터 풍속 값마다 비교를 하기 위한 반복문
for wind in data['풍속']:
# threshold 값과 비교하여 분리합니다.
if wind > threshold:
yes.append(wind)
else:
no.append(wind)
# 예측한 결과를 DataFrame 형태로 저장합니다.
data_yes = pd.DataFrame({'풍속': yes, '예상 지연 여부': ['Yes']*len(yes)})
data_no = pd.DataFrame({'풍속': no, '예상 지연 여부': ['No']*len(no)})
return data_no.append(data_yes,ignore_index=True)
# 풍속에 따른 항공 지연 여부 데이터
Wind = [1, 1.5, 2.5, 5, 5.5, 6.5]
Delay = ['No', 'No', 'No', 'Yes', 'Yes', 'Yes']
# 위 데이터를 DataFrame 형태로 저장합니다.
data = pd.DataFrame({'풍속': Wind, '지연 여부': Delay})
print(data,'\n')
"""
1. binary_tree 모델을 사용하여 항공 지연 여부를 예측합니다.
"""
data_pred = binary_tree(data, threshold = 3)
print(data_pred,'\n')
풍속 지연 여부
0 1.0 No
1 1.5 No
2 2.5 No
3 5.0 Yes
4 5.5 Yes
5 6.5 Yes
풍속 예상 지연 여부
0 1.0 No
1 1.5 No
2 2.5 No
3 5.0 Yes
4 5.5 Yes
5 6.5 Yes
threshold=3 ?
'ML' 카테고리의 다른 글
정확도(Accuracy) 계산하기 (0) | 2022.11.24 |
---|---|
혼동 행렬(Confusion matrix) (0) | 2022.11.24 |
sklearn을 사용한 의사결정나무 - 데이터 전 처리 (0) | 2022.11.24 |
회귀 알고리즘 평가 지표 - R2 (0) | 2022.11.24 |
회귀 알고리즘 평가 지표 - MSE, MAE (0) | 2022.11.24 |