Как преобразовать модель C4.5 в стиле JSON в изображение с graphviz? - PullRequest
0 голосов
/ 05 декабря 2018

Эта модель создана из моего блога с использованием стиля dict-типа в Python из "Машинного обучения в действии" (известная книга):

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)'
    }
}

информация вышеdict:

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

Изображение, генерируемое matplotlib из вышеприведенного дерева, выглядит следующим образом:

mathplotlib vizualization

Однако, многие узлы НЕ могут быть видны на этом рисунке, поэтомуесть ли способ построить это с помощью графика?Например, например, по следующей ссылке:

Как преобразовать данные JSON в древовидное изображение?

Большое спасибо!

...