Vor kurzem war ich Jupyter Notebook (Python3) zu Dank verpflichtet. Ich werde es posten, weil einige Tricks zugenommen haben.
Jupyter Notebook 4.2.x
Python 3.5.x
Beispielsweise kann es in der Jupyter-Umgebung im Docker von https://github.com/mokemokechicken/jupyter-tensorflow verwendet werden.
Entscheidungsbäume wie "sklearn.tree.tree.DecisionTreeClassifier" können im Punktformat ausgegeben werden, aber der Versuch, sie auf einem Notizbuch anzuzeigen, ist ziemlich ärgerlich. Mit bestimmten Vorbereitungen und Verfahren können Sie dies jedoch problemlos tun.
Definieren Sie eine solche Funktion.
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
Sie können es so verwenden.
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')
Möglicherweise möchten Sie neu laden, da Sie die zu importierende Datei von einem anderen Speicherort geändert haben. Wenn Sie Folgendes schreiben, wird es jedes Mal neu geladen, wenn Sie ein Notebook ausführen. Bevor ich das wusste, habe ich den Kernel jedes Mal neu gestartet (^^;
%reload_ext autoreload
%autoreload 2
from IPython.core.display import display
Importieren und
display(data_frame)
Dann wird es wie gewohnt angezeigt. Wenn Sie eine Zeichenfolge usw. übergeben, wird die Zeichenfolge normal ausgegeben.
Wenn Sie so schreiben,
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))
Die Grafiken werden zusammengefroren und die Grafik wird am Ende angezeigt.
In diesem Fall sollten Sie zum richtigen Zeitpunkt plt.show ()
aufrufen.
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()
Dies kann nicht nur für Skripte auf Notebooks verwendet werden, sondern auch, wenn Sie aus normalem Quellcode auf Notebooks ausgeben möchten.
Es war ein Trick.
Recommended Posts