如何使用graphviz将JSON样式的C4.5模型转换为图像?

时间:2018-12-05 06:54:15

标签: python graphviz decision-tree pygraphviz c4.5

此模型是使用{Machine Learning in Action“(著名书籍)中的Python中的dict-type样式从my blog创建的:

C4.5 model=
{
    'A9': {
        '=t': {
            'A15': {
                '>228': ' + (106.0/3.8)',
                '<=228': {
                    'A11': {
                        '>3': {
                            'A15': {
                                '>4': {
                                    'A15': {
                                        '<=5': ' - (2.0/1.0)',
                                        '>5': ' + (10.0/2.4)'
                                    }
                                },
                                '<=4': ' + (25.0/1.3)'
                            }
                        },
                        '<=3': {
                            'A4': {
                                '=u': {
                                    'A7': {
                                        '=v': {
                                            'A14': {
                                                '<=110': ' + (18.0/2.5)',
                                                '>110': {
                                                    'A15': {
                                                        '>8': ' + (4.0/1.2)',
                                                        '<=8': {
                                                            'A6': {
                                                                '=aa': {
                                                                    'A2': {
                                                                        '<=41': ' - (3.0/1.1)',
                                                                        '>41': ' + (2.0/1.0)'
                                                                    }
                                                                },
                                                                '=w': {
                                                                    'A12': {
                                                                        '=t': ' - (2.0/1.0)',
                                                                        '=f': ' + (3.0/1.1)'
                                                                    }
                                                                },
                                                                '=q': {
                                                                    'A12': {
                                                                        '=t': ' + (4.0/1.2)',
                                                                        '=f': ' - (2.0/1.0)'
                                                                    }
                                                                },
                                                                '=ff': ' - (0.0)',
                                                                '=r': ' - (0.0)',
                                                                '=i': ' - (0.0)',
                                                                '=x': ' - (0.0)',
                                                                '=e': ' - (0.0)',
                                                                '=d': ' - (2.0/1.0)',
                                                                '=c': ' - (4.0/2.2)',
                                                                '=m': {
                                                                    'A13': {
                                                                        '=g': ' + (2.0/1.0)',
                                                                        '=p': ' - (0.0)',
                                                                        '=s': ' - (5.0/1.2)'
                                                                    }
                                                                },
                                                                '=cc': ' + (2.0/1.8)',
                                                                '=k': ' - (2.0/1.0)',
                                                                '=j': ' - (0.0)'
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        '=z': ' + (1.0/0.8)',
                                        '=bb': {
                                            'A14': {
                                                '<=164': ' + (3.4/1.5)',
                                                '>164': ' - (5.6/1.2)'
                                            }
                                        },
                                        '=ff': ' - (1.0/0.8)',
                                        '=o': ' + (0.0)',
                                        '=n': ' + (0.0)',
                                        '=h': ' + (18.0/1.3)',
                                        '=dd': ' + (0.0)',
                                        '=j': ' - (1.0/0.8)'
                                    }
                                },
                                '=l': ' + (0.0)',
                                '=y': {
                                    'A13': {
                                        '=g': {
                                            'A14': {
                                                '<=204': ' - (16.0/2.5)',
                                                '>204': ' + (5.0/2.3)'
                                            }
                                        },
                                        '=p': ' - (0.0)',
                                        '=s': ' + (2.0/1.0)'
                                    }
                                },
                                '=t': ' + (0.0)'
                            }
                        }
                    }
                }
            }
        },
        '=f': ' - (239.0/19.4)'
    }
}

上述字典的信息:

'A9':split node
' + (0.0)':leaf
'=f':branch
'>228':branch

使用matplotlib生成的上述树的图片为:

mathplotlib vizualization

但是,在这张图片中看不到许多节点,所以有什么方法可以用graphviz绘制它吗?例如,如下链接:

How to convert JSON data into a tree image?

非常感谢!

0 个答案:

没有答案