Computer Science 와 이산수학 분야에서도 여전히 플로우 챠트를 비롯하여 그래픽 작업이 필수적이다. 특히 머신 러닝을 다루기 위한 구글의 TensorFlow 라이브러리 사용 시에는 사용자가 작성한 머신 러닝 코드에 대하여 별도로 TensorBoard에 의해 Computational Graph를 받아 볼 수 있도록 지원이 되고 있다.
아울러 최근 DecisionTreeClassifier를 처리하는 과정에서도 일종의 플로우챠트 형태와 유사한 단계별 의사결정 다이아그램이 GraphViz를 사용하여 처리되어 출력된다.
아무리 머신 러닝이 발전되었다 해도 아직까지는 컴퓨터 코드를 다루는 사용자가 때에 따라서는 스스로 코드의 로직을 설명할 수 있도록 Graph를 스스로 그릴 필요성이 많으므로 아래 url 주소에서 오픈소스인 GraphViz 명령어 사용법을 익혀 두도록 하자.
https://graphs.grevian.org/example
GraphViz Pocket Reference 웹 화면에 들어가 보면 그래프 종류 예제와 실제 작도된 Graph를 볼 수 있다.
예제의 Simple Graph는 a, b, c, d, e 다섯 개 노드 혹은 유닛간의 연결 관계를 graph{ } 명령을 사용하여 기술하고 있다. 연결하고 싶은 연결성을 모조리 기술해 주어야 한다.
위 그림의 예제에 표시된 graph{ } 코드를 사용하여 Graph를 작성해 보고 싶으면 graph{ } 코드를 복사한 후 하이퍼링크 Make a Graph를 클릭해 들어가자.
약간의 실행하는 시간이 소요되면 Generate 버튼 하단에 Graph가 작도된다. DOT 이란 Graph 데이터 형식을 나타내는 확장자로서 널리 사용되고 있다.
{1, 2, 3} 을 연결하는 Graph를 실습해 보기로 한다.
다음은 a, b, c, d 가 방향성 화살표로 연결되는 Graph이며 digraph{ } 명령을 사용한다.
다음은 화살표 별로 웨이트 값이 출력되는 digraph{ } 이다. 매뉴얼에 따르면 weigt 는 edge 즉 선이나 화살표 라인의 속성이라는 설명 외에 구체적인 언급이 없다. 이러한 유형의 Graph 는 Markov Chain 을 작도하기에 편리하다.
digraph 명령 내에서 subgroup 명령을 사용하여 2개의 서브그라프 모듈로 분리하여 표현하기는 방법도 있다.
GraphViz에 의한 Graph 생성 작업은 Graph 네트워크 표현뿐만 아니라 sckit-learn 라이브러리가 지원하는 DecisionTreeClassifier 루틴에서 생성되는 decision tree image 를 출력하는 작업에서 중요하게 사용된다.
이 부분에 관해서는 아래의 내용 즉 바로 지난번 포스팅한 을 참조하기 바란다.
1-16 Decision Tree Classifier 와 GraphViz, PyDotPlus 설치
https://steemit.com/kr/@codingart/1-16-decision-tree-classifier-graphviz-pydotplus