[PYTHON] Utilisation de Graphviz avec Jupyter Notebook

en premier

Dans cet article, l'auteur qui n'a jamais utilisé Graphviz utilise ** Graphviz ** dans ** jupyter-notebook **. À propos, il existe diverses informations sur la façon d'utiliser Graphviz sur le net. Par exemple

Ou quelque chose. Vous pouvez l'utiliser en le définissant dans l'un des deux articles ci-dessus. Si vous regardez le site et que vous pensez que tout va bien, tout va bien. Cette fois, je vais mélanger un peu les deux articles pour créer une ambiance.

Qu'est-ce que Graphviz

Tout d'abord, jetons un bref coup d'œil à Graphviz. Je pense que c'est un résumé des sites suivants.

Graphviz est une abréviation de Graph Visualization Software, un outil de création de graphiques. Un fichier texte écrit en utilisant un langage de description de données appelé langage par points peut être converti et sorti sous forme de fichier image. Il est également utilisé lors de l'élaboration d'un arbre de décision pour l'apprentissage automatique. Diverses plates-formes (Windows, Mac, Linux) sont disponibles. À propos, dot semble être un programme qui dessine des graphiques dirigés.             fig01.png

Source: Analyse statistique de texte (6) -Analyse de réseau de mots-

La figure ci-dessus est la différence entre un graphe orienté et un graphe non orienté. Pour le dire en mots, y a-t-il une direction spécifique d'un sommet à l'autre? Y a-t-il une flèche dans la figure ci-dessus? En d'autres termes, la relation entre chaque sommet est fixe ou non. Par exemple, le graphique orienté est un hyperlien et le graphique non orienté est une carte d'itinéraire de train. Je ne peux pas revenir à la page d'origine lorsque je clique sur le lien hypertexte (ne pensez pas au bouton de retour lol) </ font>, et le train va et vient librement entre les gares adjacentes. peut faire.

Installation de Graphviz

J'ai essayé cette fois deux méthodes d'installation. Au fait, lorsque je suis allé sur la page de téléchargement du site officiel, c'était différent de celui présenté sur le site ci-dessus.

  • Comment télécharger depuis le site officiel
  • Comment déposer le fichier zip

Ces deux méthodes.

Télécharger depuis le site officiel

Tout d'abord, cliquez sur le lien sur le site officiel de ici. Cliquez ensuite sur télécharger image.png Cliquez sur les packages Windows Graphviz sous Windows image.png Vous serez redirigé vers la page github, alors sélectionnez le fichier "2.38 yaml" Si vous recherchez le lien publié sur Url, il sera téléchargé sans autorisation image.png Après cela, démarrez le programme d'installation et démarrez l'installation. Vous pouvez vous référer au site ici. Veuillez juger s'il faut cocher «tout le monde» en fonction du nombre de comptes sur votre ordinateur.

Déposez le fichier zip

Vous pouvez déposer le fichier zip depuis le site ici. Une fois déposé, tout ce que vous avez à faire est de décompresser le fichier.

la mise en oeuvre

Cette fois, nous allons visualiser le graphique de l'arbre de décision en utilisant le jeu de données survivant du Titanic. Ce code est [ici](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) se réfère au code. Je vais l'écrire séparément dans un style jupyter.

Commencez par charger les bibliothèques requises. (La partie utilisateur est le nom de votre compte)

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

#Lire les données
train = pd.read_csv("/Users/user/jupyter/train.csv") 

Fondamentalement, il semble que les ensembles de données généraux aient des valeurs manquantes, alors vérifiez

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

Il semble y avoir des valeurs manquantes dans Age, Cabin et Embarked. J'ignorerai Cabin car je ne l'utiliserai pas cette fois. La valeur manquante de Age complète la moyenne de l'âge entier, et Embarqué complète la valeur la plus fréquente «S».

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

Lors de l'apprentissage, nous devons en faire un type int, nous allons donc convertir les chaînes'Sex'et'Embarked 'en nombres. Cette fois, les numéros sont attribués manuellement, mais ils peuvent également être convertis à l'aide de variables factices.

#Conversion de variables catégorielles
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)

Supprimez les classes inutilisées.

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

Le prétraitement des données étant terminé, vérifiez une fois les valeurs manquantes.

train.isnull().sum()

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

J'ai pu éliminer les valeurs manquantes. Ensuite, nous séparerons l'ensemble de données pour le train et l'ensemble de données pour le test. La distribution des images de test était de 30% du total.

#Divisé en données d'entraînement et données de test
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)

Construisez un modèle et entraînez-vous. La profondeur est de 3 couches.

#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

De là, je vais dessiner avec Graphviz.

#Processus pour traiter la chaîne de caractères comme un objet fichier
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()) 
#Spécifiez le chemin absolu du répertoire dans lequel vous avez téléchargé graphviz
graph.progs = {'dot': u"C:\\Users\\user\\anaconda3\\bin\\release\\bin\\dot.exe"}
#Visualiser dans le cahier
Image(graph.create_png()) 

image.png

J'ai pu dessiner un arbre de décision.

finalement

Cette fois, j'ai utilisé jupyter, mais c'est bien sûr possible avec d'autres IDE. Au fait, le plus difficile était de trouver le fichier d'installation sur le site officiel.

Recommended Posts

Utilisation de Graphviz avec Jupyter Notebook
Essayez d'utiliser l'environnement virtuel conda avec Jupyter Notebook
Utiliser pip avec Jupyter Notebook
Essayez d'utiliser Jupyter Notebook de manière dynamique
Utiliser Cython avec Jupyter Notebook
Jouer avec Jupyter Notebook (IPython Notebook)
Autoriser les connexions externes avec le notebook Jupyter
Formatage avec autopep8 sur le notebook Jupyter
Visualisez l'arbre de décision avec le notebook Jupyter
Faites un son avec le notebook Jupyter
Utiliser Markdown avec le notebook Jupyter (avec raccourci)
Ajouter plus de noyaux avec Jupyter Notebook
Analyse pratique avec Pandas + notebook Jupyter
J'ai essayé d'utiliser le notebook jupyter d'une manière ou d'une autre
Utiliser nbextensions avec le notebook Jupyter d'Anaconda
Mémo Jupyter Notebook
Présentation de Jupyter Notebook
Utilisation d'Apache Spark avec le notebook Jupyter (notebook IPython)
Je veux écrire un blog avec Jupyter Notebook
Utiliser Jupyter Lab et Jupyter Notebook avec EC2
Essayez SVM avec scikit-learn sur Jupyter Notebook
Puissant ordinateur portable Jupyter
Comment utiliser le notebook Jupyter avec ABCI
Lier Python et JavaScript avec le notebook Jupyter
Utilisation du noyau Jupyter de Java avec Google Colaboratory
Mot de passe du notebook Jupyter
Mémo Jupyter Notebook
[Mémo Jupyter Notebook] Afficher les kanji avec matplotlib
Sortie de cellule riche avec Jupyter Notebook (IPython)
Comment déboguer avec Jupyter ou iPython Notebook
Analyse des données pour améliorer POG 2 ~ Analyse avec le notebook jupyter ~
Utilisation de MLflow avec Databricks ① - Suivi expérimental sur notebook -
Vérifiez la précision du NLC avec le bloc-notes Jupyter de Watson Studio
Activer Jupyter Notebook avec conda sur un serveur distant
[Pythonocc] J'ai essayé d'utiliser la CAO sur un notebook Jupyter
Remplissez la largeur du bloc-notes Jupyter pour remplir le navigateur
Paramètres lors de l'utilisation de Jupyter Notebook sous un serveur proxy
Paramètres de proxy lors de l'utilisation de pip ou de Jupyter Notebook
Dessin graphique avec jupyter (notebook ipython) + matplotlib + vagrant
Essayez d'utiliser le bloc-notes Jupyter à partir d'Azure Machine Learning
Sélection multiple avec Jupyter
Bougies avec plotly + Jupyter
Démarrer Jupyter Notebook
3 astuces du notebook Jupyter (Python)
J'ai essayé d'utiliser Jupyter
Utilisez nim avec Jupyter
[Cloud103] # 3 Jupyter Notebook à nouveau
Construction d'environnement virtuel avec Docker + Flask (Python) + notebook Jupyter
Machine learning facile avec AutoAI (partie 4) Jupyter Notebook
Surveiller le modèle d'entraînement avec TensorBord sur Jupyter Notebook
Dessiner une structure arborescente avec D3.js dans Jupyter Notebook
Importer des cellules spécifiques à partir d'autres blocs-notes avec le bloc-notes Jupyter
Approvisionnement EC2 avec Vagrant + Jupyter (IPython Notebook) sur Docker
Préparez facilement un environnement Jupyter Notebook avec Docker (Tensorflow et Graphviz sont également disponibles)
Comment créer rapidement un environnement d'apprentissage automatique à l'aide de Jupyter Notebook avec UbuntuServer 16.04 LTS
Utilisation de X11 avec ubuntu18.04 (langage C)
Incorporer des données audio avec Jupyter
Lors de l'utilisation d'optparse avec iPython
Calcul parallèle avec le notebook iPython
Essayez d'utiliser PythonTex avec Texpad.