매직코드
article thumbnail

파이썬 머신러닝 완벽가이드 책을 보면서 공부하다보면 맥 사용자에게 불편한 점이 몇가지 있다.

그 중 하나는 graghviz설치 방법이 윈도우만 나와있고 MacOS버전의 설치방법이 자세히 나와있지 않다는 점이다.

 

검색해보면 pip install graphviz, conda install graphviz 해보라고 하는데 안되더라....

그래서 찾아낸 제대로 설치하는 방법!

 

1. homebrew 설치

맥의 경우 연동이 안되는 패키지들이 있어서 이 패키지들을 연동시켜줄 다른 통로가 필요하다.

그래서 graphviz사이트에 들어가보면 sudo, homebrew를 통해서 설치하라고 나온다.

나는 homebrew를 이용해보겠다.

 

https://brew.sh/index_ko

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

이 홈페이지에 들어가면 설치하는 코드가 나오는데 아나콘다 cmd에 작성해주면 된다.

중간에 뭐 누르라고 하는데 엔터를 치면 마저 다운로드가 된다.

설치하는데 시간이 좀 걸렸다.

(base) 내컴퓨터이름-MacBookPro ~ % 

이 문장이 나올때까지 기다려야한다. 가상환경을 만든 사람은(base)가 아니라 가상환경이름으로 나타난다.

 

2. homebrew를 이용한 graphviz설치

brew install graphviz

homebrew가 설치되었기 때문에 brew를 통해서 graphviz를 설치해준다.

이미지를 생성해주는 패키지여서 다운로드하는게 시간이 좀 걸린다.

설치가 다 된 이후에는 쥬피터를 껐다가 다시 실행시켜야 적용이 된다.

 

3. 쥬피터에서 확인하기

graphviz를 사용하기 위해서 sklearn.tree를 통해 export_graphviz()로 시각화 파일을 만든다.

graphviz를 통해 시각화 파일을 읽어오면 결정트리를 볼 수 있다.

나는 sklearn에서 기본 제공하는 붓꽃으로 결정트리를 시각화해보았다.

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import warnings
warnings.filterwarnings('ignore')

# 의사결정트리 클래스 생성
dt_clf = DecisionTreeClassifier(random_state=156)

# 붓꽃 데이터를 로딩하고 데이터 분리
iris_data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris_data.data, iris_data.target, test_size=0.2, random_state=11)

# dt_clf학습
dt_clf.fit(X_train, y_train)
from sklearn.tree import export_graphviz

# export_graphviz()의 호출 결과로 out_file로 지정된 tree.dot 생성
export_graphviz(dt_clf, out_file="tree.dot", class_names=iris_data.target_names,
                feature_names=iris_data.feature_names, impurity=True, filled=True)
import graphviz

# 위에 생성된 tree.dot파일을 Graphviz가 읽어서 주피터에서 시각화
with open("tree.dot") as f:
    dot_graph = f.read()
        
graphviz.Source(dot_graph)

profile

매직코드

@개발법사

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!