graphviz를 설치하고 사용하는 방법을 배우다.
1. graphviz 설치하기
해당 페이지에서 graphviz를 사용자의 컴퓨터 환경에 맞게 설치하면된다.
current user로 선택해서 다음을 누르고 설치를 진행하면 된다.
시스템 환경 변수 편집을 윈도우 검색창에서 검색 후, 환경 변수 버튼을 눌러서
Path를 더블클릭 후 Graphviz가 환경변수에 존재하는지 확인한 후 있다면 그대로 확인 버튼으로 창을 닫으면 된다.
2. graphviz로 알고리즘 시각화 하기
# 시각화 패키지 설치하기
# graphviz.orgidownload
!pip install graphviz
다음 명령어로 시각화 패키지를 설치한다. 설치한 후에 사용할 수 있다.
# 1. 알고리즘 표현하기
# 트리가 가지고 있는 알고리즘을 밖으로 꺼내겠다 -> export
from sklearn.tree import export_graphviz
export_graphviz(tree_model, # 알고리즘으로 내보낼 모델 이름 명시
out_file="tree.dot", # tree.dot 형태로 알고리즘을 내보내기
class_names=["p", "e"], # 정답을 어떻게 표시할 것인지 명시 # 그림 파일로 저장했을 때를 위해 영어로 명시
feature_names=X_onehot.columns, # 원래는 특성의 번호를 표시하지만, 특성의 이름으로 지정
impurity=True, # 불순도 기본값 : gini, 엔트로피의 값을 사용할 수 있음
filled=True) # 클래스별로 색의 변화
# 연한 색상은 분류는 잘 안됐지만 같은 계열 색상으로 표시
알고리즘을 새로운 파일로 만들어서 내보낸 후 이후에 시각화를 한다. 위 코드블럭은 특정 모델의 알고리즘을 파일로 만들어서 내보내는 코드이다. 매개변수의 설명은 주석으로 설명되어있기 때문에 따로 설명은 하지 않겠다.
# 2. 환경변수 설정
# graphviz를 파이썬에서 사용하기위해서 폴더의 경로를 지정
import os
os.environ['PATH'] += os.pathsep + "C:/Program Files/Graphviz/bin"
os를 불러오고 graphviz를 사용하기 위해서 현재 Graphviz의 설치경로를 지정해준다.
# 3. 알고리즘 그리기
# 1단계에서 글로 표현된 알고리즘을 그림으로 표현하는 단계
import graphviz
# tree.dot 파일을 열어서 f 변수에 대입
with open("tree.dot", encoding="UTF8") as f:
dot_graph = f.read()
display(graphviz.Source(dot_graph))
# 전체 데이터 8124 -> 학습에 사용한 데이터 5686
# 불순도 -> 앞으로 질문할 특성
# 샘플수, 정답(p, e), 예측 클래스 -> 현재 내 노드의 데이터 정보
# leaf 노드를 확인해보면 더이상 질문하 특성이 없음. 4개의 요소만 존재
실행시키면 주피터 노트북에 해당 알고리즘이 시각화되어 결과가 나타난다. 같은 색깔의 계열이 같은 라벨을 가진다. 연한 색은 라벨 분류가 확실하게 되지 않았다는 것이다. value를 보면 알 수 있다. 하지만 우리는 시각화 된 결과를 파일형태로 저장하고 싶다.
# 4. 3단계에서 그린 그림을 파일 형태(png, jpg로 저장
from subprocess import check_call
check_call(["dot", "-Tpng", "tree.dot", "-o", "tree.png"])
# check_call 정상 출력 : 0
subprocess에서 check_call을 불러와서 dot 파일을 png로 바꾸는데 어떤 dot 파일이냐면 tree.dot파일을 tree.png로 바꿀 것이다 라는 매개변수이다.
'머신러닝' 카테고리의 다른 글
[머신러닝] 특성 선택 (0) | 2023.08.29 |
---|---|
[머신러닝] 교차검증 (cross_val_score) (0) | 2023.08.28 |
[머신러닝] 결정 트리 버섯데이터 실습 (One-hot 인코딩) (0) | 2023.08.25 |
[머신러닝] 머신러닝 Decision Tree(결정 트리) 모델 (0) | 2023.08.24 |
[머신러닝] KNN모델 - Iris 붓꽃 품종 분류 실습 (일반화, 과대적합, 과소적합) (0) | 2023.08.24 |