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.
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.
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.
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.
Ces deux méthodes.
Tout d'abord, cliquez sur le lien sur le site officiel de ici. Cliquez ensuite sur télécharger Cliquez sur les packages Windows Graphviz sous Windows 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 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.
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.
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())
J'ai pu dessiner un arbre de décision.
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