決定ツリー-モデル構造


1.決定木決定木


特定の問題(例えば20の問題)を通じて答えを探すモデル
最上位のルートノードから最後のターミナルノードへのルーティング

予測可能な質問を作成し、これらの質問に答えることで予測を行います.
問題が使用できない場合は、中間セクションの内部ノードを追加します.
つまり、すべてのデータを共有するために問題を追加します.
複数のフィーチャーデータの場合:
X 1,X 2は変数ごとに1つ(質問)を追加し,順次回答する.

最後は終了ノード、最後はカテゴリです.

2.実習


単純な意思決定ツリーの作成
今回の実験では,理論データのフライト遅延データに基づいて簡単な決定ツリーを実施する.
フライト遅延データは以下の通りです.

遅延が風速で変化するかどうかを決定するために,決定ツリーbinary treeのしきい値を変更し,遅延を完全に分離するモデルを作成することができる.

説明
binary tree関数は,入力した閾値風速に応じて予測遅延の結果をDataFrame形式で出力する.決定ツリーの成果物をdata predに格納し、データ遅延が予想遅延と等しいことを確認します.
しきい値に値を入れて結果を確認します.(ex) 1, 2, 3.5, …)
import numpy as np
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 = 4)
print(data_pred,'\n')