1

dict()以下は、私が Python でトレーニングした決定木 ( ) の簡単な例です。

tree= {'Age': {'> 55': 0.4, '< 18': {'Income': {'high': 0, 'low': 0.2}}, 
               '18-35': 0.25, '36-55': {'Marital_Status': {'single': {'Income': 
               {'high': 0, 'low': 0.1}}, 'married': 0.05}}}}

リーフ ノード (ボックス) 内の数字は、そのノードにクラス ラベル (TRUE など) が表示される確率を表します。視覚的には、ツリーは次のようになります。

ここに画像の説明を入力

親ノードよりも値が小さいノードを統合する、一般的なポストプルーニング アルゴリズムをコーディングしようとしています。0.3したがって、しきい値を使用して結果として得られるツリーは、0.3プロットすると次のようになります。

ここに画像の説明を入力

Income2 番目の図では、 のノードAge<18がルート ノードに統合されていることに注意してくださいAge。そして、 すべてのリーフ ノード (複数のレベル) の合計が 0.3 未満であるため、Age=36-55, Marital_Stausは に統合されました。Age

これは私が思いついた不完全な疑似コードです (これまでのところ):

def post_prune  (dictionary, threshold):

    for k in dictionary.keys():

        if isinstance(dictionary[k], dict): # interim node

            post_prune(dictionary[k], threshold)

        else: # leaf node

            if dictionary[k]> threshold:
                pass
            else:
                to_do = 'delete this node'

これは何度も解決されるべきだったと思うので、質問を投稿したかったのです。

ありがとうございました。

PS: 最終結果を分類に使用するつもりはありません。

4

1 に答える 1