ML

간단한 의사결정나무 만들기

Haribo- 2022. 11. 24. 20:20

간단한 의사결정나무 만들기

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

항공 지연 데이터는 아래와 같습니다.

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

 

지시사항

  1. 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 ?