Récemment, j'ai été redevable au notebook Jupyter (Python3). Je le posterai car certaines astuces ont augmenté.
Jupyter Notebook 4.2.x
Python 3.5.x
Par exemple, il peut être utilisé dans l'environnement Jupyter sur le Docker de https://github.com/mokemokechicken/jupyter-tensorflow.
Les arbres de décision tels que sklearn.tree.tree.DecisionTreeClassifier
peuvent sortir au format .dot, mais essayer de les afficher sur un cahier est assez ennuyeux.
Cependant, avec certaines préparations et procédures, vous pourrez le faire facilement.
dot
Définissez une fonction comme celle-ci.
decision_tree_util.py
import os
from tempfile import mkstemp
import subprocess
from sklearn.tree.export import export_graphviz
def convert_decision_tree_to_ipython_image(clf, feature_names=None, class_names=None,
image_filename=None, tmp_dir=None):
dot_filename = mkstemp(suffix='.dot', dir=tmp_dir)[1]
with open(dot_filename, "w") as out_file:
export_graphviz(clf, out_file=out_file,
feature_names=feature_names,
class_names=class_names,
filled=True, rounded=True,
special_characters=True)
from IPython.display import Image
image_filename = image_filename or ('%s.png' % dot_filename)
subprocess.call(('dot -Tpng -o %s %s' % (image_filename, dot_filename)).split(' '))
image = Image(filename=image_filename)
os.remove(dot_filename)
return image
Vous pouvez l'utiliser comme ça.
notebook
from sklearn import datasets
from sklearn.tree.tree import DecisionTreeClassifier
%matplotlib inline
iris = datasets.load_iris()
X = iris.data
Y = iris.target
clf = DecisionTreeClassifier(max_depth=3)
clf.fit(X, Y)
convert_decision_tree_to_ipython_image(clf, image_filename='tree.png')
Vous souhaiterez peut-être recharger car vous avez modifié le fichier que vous importez depuis un autre emplacement. Si vous écrivez ce qui suit, il sera rechargé chaque fois que vous exécuterez notebook. Avant de le savoir, j'ai redémarré le noyau à chaque fois (^^;
%reload_ext autoreload
%autoreload 2
from IPython.core.display import display
Importer et
display(data_frame)
Ensuite, il sera affiché comme d'habitude. Si vous passez une chaîne de caractères, etc., la chaîne de caractères sera sortie normalement.
Si vous écrivez comme ça,
notebook
from IPython.core.display import display
from numpy.random.mtrand import normal
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
display('graph1')
sns.distplot(normal(0, 1, size=1000))
sns.distplot(normal(0.1, 2, size=1000))
display('graph2')
sns.distplot(normal(-2, 2, size=1000))
sns.distplot(normal(2, 4, size=1000))
Les graphiques sont figés ensemble et le graphique arrive en bas.
Dans ce cas, vous devez appeler plt.show ()
au bon moment.
notebook
from IPython.core.display import display
from numpy.random.mtrand import normal
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
display('graph1')
sns.distplot(normal(0, 1, size=1000))
sns.distplot(normal(0.1, 2, size=1000))
plt.show()
display('graph1')
sns.distplot(normal(-2, 2, size=1000))
sns.distplot(normal(2, 4, size=1000))
plt.show()
Cela peut être utilisé non seulement pour le script sur le bloc-notes, mais également lorsque vous souhaitez sortir vers le bloc-notes à partir du code source ordinaire.
C'était un truc.
Recommended Posts