wake-up-neo.net

wenn ich Matplotlib in einem Jupyter-Notebook verwende, wird immer "Matplotlib verwendet derzeit einen Nicht-GUI-Backend-Fehler" angezeigt.

import matplotlib.pyplot as pl
%matplot inline
def learning_curves(X_train, y_train, X_test, y_test):
""" Calculates the performance of several models with varying sizes of training data.
    The learning and testing error rates for each model are then plotted. """

print ("Creating learning curve graphs for max_depths of 1, 3, 6, and 10. . .")

# Create the figure window
fig = pl.figure(figsize=(10,8))

# We will vary the training set size so that we have 50 different sizes
sizes = np.rint(np.linspace(1, len(X_train), 50)).astype(int)
train_err = np.zeros(len(sizes))
test_err = np.zeros(len(sizes))

# Create four different models based on max_depth
for k, depth in enumerate([1,3,6,10]):

    for i, s in enumerate(sizes):

        # Setup a decision tree regressor so that it learns a tree with max_depth = depth
        regressor = DecisionTreeRegressor(max_depth = depth)

        # Fit the learner to the training data
        regressor.fit(X_train[:s], y_train[:s])

        # Find the performance on the training set
        train_err[i] = performance_metric(y_train[:s], regressor.predict(X_train[:s]))

        # Find the performance on the testing set
        test_err[i] = performance_metric(y_test, regressor.predict(X_test))

    # Subplot the learning curve graph
    ax = fig.add_subplot(2, 2, k+1)

    ax.plot(sizes, test_err, lw = 2, label = 'Testing Error')
    ax.plot(sizes, train_err, lw = 2, label = 'Training Error')
    ax.legend()
    ax.set_title('max_depth = %s'%(depth))
    ax.set_xlabel('Number of Data Points in Training Set')
    ax.set_ylabel('Total Error')
    ax.set_xlim([0, len(X_train)])

# Visual aesthetics
fig.suptitle('Decision Tree Regressor Learning Performances', fontsize=18, y=1.03)
fig.tight_layout()
fig.show()

wenn ich die Funktion learning_curves() starte, wird Folgendes angezeigt:

UserWarning: C:\Benutzer\Administrator\Anaconda3\lib\site-packages\matplotlib\figure.py: 397: UserWarning: matplotlib verwendet derzeit ein Nicht-GUI-Backend

this is the screenshot

29
Yuhao Li

Sie brauchen die Zeile von "fig.show ()" nicht. Entferne es einfach. Dann wird es keine Warnmeldung geben. 

43
Yul

Sie können das von matplotlib verwendete Backend ändern, indem Sie Folgendes hinzufügen:

import matplotlib
matplotlib.use('TkAgg')

before Ihre Zeile 1 import matplotlib.pyplot as pl, da diese zuerst gesetzt werden muss. Siehe diese Antwort für weitere Informationen.

(Es gibt andere Backend-Optionen, aber das Ändern des Backends in TkAgg hat für mich funktioniert, als ich ein ähnliches Problem hatte.)

15
airdas

das Hinzufügen von % matplotlib inline während des Importierens hilft bei glatten Plots in Notebooks

%matplotlib inline
import matplotlib.pyplot as plt

% matplotlib inline setzt das Backend von Matplotlib auf das Inline-Backend: Bei diesem Backend wird die Ausgabe von Plotbefehlen innerhalb des Frontends wie das Jupyter-Notebook direkt unter der Codezelle angezeigt, in der es erzeugt wurde. Die resultierenden Plots werden dann auch im Notizbuchdokument gespeichert.

4

Testen mit https://matplotlib.org/examples/animation/dynamic_image.html füge ich nur hinzu

%matplotlib notebook

das scheint zu funktionieren, ist aber etwas holprig. Ich musste das kernal ab und zu aufhalten :-(

4
Clemens Tolboom

Ich habe versucht, 3D-Clustering ähnlich wie Towards Data Science Tutorial zu gestalten. Ich dachte zuerst, dass fig.show() vielleicht richtig ist, bekam aber dieselbe Warnung ... Kurz angesehen Matplot3d .. aber dann habe ich plt.show() versucht und es zeigte mein 3D-Modell genau wie erwartet. Ich denke, es macht auch Sinn. Dies wäre gleichbedeutend mit Ihrer pl.show()

Verwenden von Python 3.5 und Jupyter Notebook

2
GAINZ

Ich hatte den gleichen fehler Dann habe ich benutzt

import matplotlib matplotlib.use('WebAgg')

es funktioniert einwandfrei. (Sie müssen Tornado installieren, um im Web anzuzeigen, (pip install tornado))

Python-Version: 3.7 Matplotlib-Version: 3.1.1

0
praveen balaji

Wenn Sie Profiling-Bibliotheken wie pandas_profiling verwenden, können Sie diese auskommentieren und den Code ausführen. In meinem Fall habe ich pandas_profiling verwendet, um einen Bericht für Beispielzugdaten zu generieren. Das Auskommentieren von import pandas_profiling hat mir geholfen, mein Problem zu lösen.

0
Anvesh