[PYTHON] Verwenden von Graphviz mit Jupyter Notebook

zunaechst

In diesem Artikel verwendet der Autor, der Graphviz noch nie verwendet hat, ** Graphviz ** in ** jupyter-notebook **. Übrigens gibt es verschiedene Informationen zur Verwendung von Graphviz im Internet. Zum Beispiel

Oder so. Sie können es verwenden, indem Sie es in einem der beiden oben genannten Artikel einstellen. Wenn Sie sich die Website ansehen und das Gefühl haben, dass dies in Ordnung ist, ist alles in Ordnung. Dieses Mal werde ich die beiden Artikel ein wenig mischen, um eine Umgebung zu schaffen.

Was ist Graphviz?

Lassen Sie uns zunächst einen kurzen Blick auf Graphviz werfen. Ich denke, es ist eine Zusammenfassung der folgenden Websites.

Graphviz ist eine Abkürzung für Graph Visualization Software, ein Tool zum Erstellen von Grafiken. Eine Textdatei, die mit einer Datenbeschreibungssprache namens Punktsprache geschrieben wurde, kann konvertiert und als Bilddatei ausgegeben werden. Es wird auch beim Zeichnen eines Entscheidungsbaums für maschinelles Lernen verwendet. Verschiedene Plattformen (Windows, Mac, Linux) stehen zur Verfügung. Übrigens scheint dot ein Programm zu sein, das gerichtete Graphen zeichnet.             fig01.png

Quelle: Statistische Textanalyse (6) - Wortnetzwerkanalyse -

Die obige Abbildung zeigt den Unterschied zwischen einem gerichteten und einem ungerichteten Diagramm. Gibt es eine bestimmte Richtung von einem Scheitelpunkt zum anderen? Gibt es in der obigen Abbildung einen Pfeil? Mit anderen Worten, die Beziehung zwischen jedem Scheitelpunkt ist fest oder nicht. Beispielsweise ist der gerichtete Graph ein Hyperlink und der ungerichtete Graph eine Zugroutenkarte. Ich kann nicht zur Originalseite zurückkehren, wenn ich auf den Hyperlink klicke (denken Sie nicht an den Zurück-Button lol) </ font>, und der Zug fährt frei zwischen den benachbarten Stationen hin und her. tun können.

Graphviz-Installation

Es gibt zwei Installationsmethoden, die ich dieses Mal ausprobiert habe. Übrigens, als ich auf die Download-Seite der offiziellen Website ging, war sie anders als die auf der obigen Website eingeführte.

  • Wie von der offiziellen Website herunterladen
  • So löschen Sie die Zip-Datei

Diese beiden Methoden.

Download von der offiziellen Website

Klicken Sie zunächst auf den Link auf der offiziellen Website von hier. Klicken Sie dann auf Download image.png Klicken Sie unter Windows auf Graphviz Windows-Pakete image.png Sie werden zur Github-Seite weitergeleitet. Wählen Sie also die Datei "2.38 yaml" aus. Wenn Sie den auf URL veröffentlichten Link durchsuchen, wird er ohne Erlaubnis heruntergeladen image.png Starten Sie danach das Installationsprogramm und starten Sie die Installation. Sie können auf die Website hier verweisen. Bitte beurteilen Sie anhand der Anzahl der Konten auf Ihrem Computer, ob "alle" überprüft werden sollen.

Löschen Sie die Zip-Datei

Sie können die Zip-Datei von der Website hier löschen. Nach dem Löschen müssen Sie die Datei nur noch entpacken.

Implementierung

Dieses Mal werden wir die Grafik des Entscheidungsbaums anhand des überlebenden Datensatzes der Titanic visualisieren. Dieser Code lautet [hier](https://qiita.com/5sigma_AAA/items/0c23907da9330681147b#%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%81% AE% E5% AE% 9F% E8% A3% 85) bezieht sich auf den Code. Ich werde es separat in einem Jupiter-Stil schreiben.

Laden Sie zunächst die erforderlichen Bibliotheken. (Der Benutzerteil ist Ihr Kontoname)

from sklearn.tree import DecisionTreeClassifier 
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve, auc, accuracy_score

import pandas as pd

from sklearn.tree import export_graphviz
import pydotplus 
from io import StringIO
from IPython.display import Image

#Daten lesen
train = pd.read_csv("/Users/user/jupyter/train.csv") 

Grundsätzlich scheinen allgemeine Datensätze fehlende Werte zu haben. Überprüfen Sie dies

train.isnull().sum()

PassengerId 0 Survived 0 Pclass 0 Name 0 Sex 0 Age 177 SibSp 0 Parch 0 Ticket 0 Fare 0 Cabin 687 Embarked 2

In Age, Cabin und Embarked scheinen Werte zu fehlen. Ich werde Cabin ignorieren, weil ich es diesmal nicht benutzen werde. Der fehlende Wert von Alter ergänzt den Durchschnitt des gesamten Alters, und Eingeschifft ergänzt den häufigsten Wert "S".

train["Age"] = train["Age"].fillna(train["Age"].median())
train["Embarked"] = train["Embarked"].fillna("S")

Wenn wir lernen, müssen wir es zu einem int-Typ machen, damit wir die Zeichenfolgen 'Sex' und 'Embarked' in Zahlen konvertieren. Dieses Mal werden die Nummern manuell zugewiesen, sie können jedoch auch mithilfe von Dummy-Variablen konvertiert werden.

#Konvertierung kategorialer Variablen
train['Sex'] = train['Sex'].apply(lambda x: 1 if x == 'male' else 0)
train['Embarked'] = train['Embarked'].map( {'S': 0 , 'C':1 , 'Q':2}).astype(int)

Löschen Sie nicht verwendete Klassen.

train = train.drop(['Cabin','Name','PassengerId','Ticket'],axis =1)

Überprüfen Sie nach Abschluss der Datenvorverarbeitung einmal auf fehlende Werte.

train.isnull().sum()

Survived 0 Pclass 0 Sex 0 Age 0 SibSp 0 Parch 0 Fare 0 Embarked 0

Ich konnte fehlende Werte beseitigen. Als nächstes werden wir den Datensatz für den Zug und den Datensatz für den Test trennen. Die Verteilung der Testbilder betrug 30% der Gesamtmenge.

#Unterteilt in Trainingsdaten und Testdaten
train_X = train.drop('Survived',axis = 1)
train_y = train.Survived
(train_X , test_X , train_y , test_y) = train_test_split(train_X, train_y , test_size = 0.3 , random_state = 0)

Baue ein Modell und trainiere. Die Tiefe beträgt 3 Schichten.

#train
model = DecisionTreeClassifier(max_depth=3,random_state = 0)
model.fit(train_X , train_y)

#accuracy
pred = model.predict(test_X)
fpr, tpr, thresholds = roc_curve(test_y , pred,pos_label = 1)
auc(fpr,tpr)
print("accuracy=",accuracy_score(pred,test_y)

accuracy=0.8208955223880597

Von hier aus werde ich mit Graphviz zeichnen.

#Prozess zum Behandeln der Zeichenfolge wie ein Dateiobjekt
dot_data = StringIO() 

export_graphviz( 
    model, out_file=dot_data, 
    feature_names=train_X.columns,
    class_names=["Death", "Survival"]
) 

graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) 
#Geben Sie den absoluten Pfad des Verzeichnisses an, in das Sie graphviz heruntergeladen haben
graph.progs = {'dot': u"C:\\Users\\user\\anaconda3\\bin\\release\\bin\\dot.exe"}
#Im Notizbuch visualisieren
Image(graph.create_png()) 

image.png

Ich konnte einen Entscheidungsbaum zeichnen.

Schließlich

Diesmal habe ich jupyter verwendet, aber natürlich ist es mit anderen IDEs möglich. Am schwierigsten war es übrigens, die Installationsdatei von der offiziellen Website zu finden.

Recommended Posts

Verwenden von Graphviz mit Jupyter Notebook
Versuchen Sie, die virtuelle Umgebung von conda mit Jupyter Notebook zu verwenden
Verwenden Sie pip mit Jupyter Notebook
Versuchen Sie, Jupyter Notebook dynamisch zu verwenden
Verwenden Sie Cython mit Jupyter Notebook
Spielen Sie mit Jupyter Notebook (IPython Notebook)
Ermöglichen Sie externe Verbindungen mit dem Jupiter-Notebook
Formatieren mit autopep8 auf Jupyter Notebook
Visualisieren Sie den Entscheidungsbaum mit einem Jupyter-Notizbuch
Machen Sie einen Sound mit Jupyter Notebook
Markdown mit Jupyter-Notebook verwenden (mit Verknüpfung)
Fügen Sie mit Jupyter Notebook weitere Kernel hinzu
Bequeme Analyse mit Pandas + Jupyter Notebook
Ich habe irgendwie versucht, ein Jupyter-Notebook zu verwenden
Verwenden Sie nbextensions mit Anacondas Jupyter-Notizbuch
Jupyter Notizbuch Memo
Einführung in Jupyter Notebook
Verwenden von Apache Spark mit Jupyter Notebook (IPython Notebook)
Ich möchte einen Blog mit Jupyter Notebook schreiben
Verwenden Sie Jupyter Lab und Jupyter Notebook mit EC2
Probieren Sie SVM mit scikit-learn auf Jupyter Notebook aus
Leistungsstarkes Jupyter-Notizbuch
Verwendung des Jupyter-Notebooks mit ABCI
Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch
Verwendung des Jupyter-Kernels von Java mit Google Colaboratory
Jupyter Notebook Passwort
Jupyter Notizbuch Memo
[Jupyter Notebook Memo] Kanji mit Matplotlib anzeigen
Reichhaltige Zellenausgabe mit Jupyter Notebook (IPython)
So debuggen Sie mit Jupyter oder iPython Notebook
Datenanalyse zur Verbesserung von POG 2 ~ Analyse mit Jupiter-Notebook ~
Verwenden von MLflow mit Databricks ① - Experimentelles Tracking auf Notebooks -
Überprüfen Sie die NLC-Genauigkeit mit dem Jupyter Notebook von Watson Studio
Aktivieren Sie Jupyter Notebook mit conda auf dem Remote-Server
[Pythonocc] Ich habe versucht, CAD auf einem Jupyter-Notebook zu verwenden
Füllen Sie die Breite des Jupyter-Notizbuchs, um den Browser zu füllen
Einstellungen bei Verwendung von Jupyter Notebook unter Proxyserver
Proxy-Einstellungen bei Verwendung von Pip oder Jupyter Notebook
Grafikzeichnung mit Jupyter (Ipython-Notizbuch) + Matplotlib + Vagabund
Versuchen Sie es mit dem Jupyter Notebook von Azure Machine Learning
Mehrfachauswahl mit Jupyter
Kerzenbeine mit Plot + Jupyter
Starten Sie Jupyter Notebook
3 Jupyter Notebook (Python) Tricks
Ich habe versucht, Jupyter zu verwenden
Verwenden Sie nim mit Jupyter
[Cloud103] # 3 Jupyter Notebook wieder
Aufbau einer virtuellen Umgebung mit Docker + Flask (Python) + Jupyter-Notebook
Einfaches maschinelles Lernen mit AutoAI (Teil 4) Jupyter Notebook
Überwachen Sie das Trainingsmodell mit TensorBord auf Jupyter Notebook
Zeichnen einer Baumstruktur mit D3.js in Jupyter Notebook
Importieren Sie bestimmte Zellen aus anderen Notizbüchern mit Jupyter-Notizbuch
EC2-Bereitstellung mit Vagrant + Jupyter (IPython Notebook) auf Docker
Bereiten Sie mit Docker ganz einfach eine Jupyter Notebook-Umgebung vor (Tensorflow und Graphviz sind ebenfalls verfügbar).
So erstellen Sie schnell eine maschinelle Lernumgebung mit Jupyter Notebook mit UbuntuServer 16.04 LTS
Verwenden von X11 mit ubuntu18.04 (C-Sprache)
Betten Sie Audiodaten in Jupyter ein
Bei Verwendung von optparse mit iPython
Parallele Berechnung mit iPython Notebook
Versuchen Sie, PythonTex mit Texpad zu verwenden.