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
プロットすると次のようになります。
Income
2 番目の図では、 のノード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: 最終結果を分類に使用するつもりはありません。