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()
когда я запускаю функцию learning_curves()
, она показывает:
UserWarning:C:\Users\Administrator\Anaconda3\lib\site-packages\matplotlib\figure.py:397: UserWarning: matplotlib в настоящее время использует не-GUI бэкенд, поэтому не может показать рисунок
добавление %библиотек matplotlib встроенное при импорте помогает для гладких участков в тетради
%matplotlib inline
import matplotlib.pyplot as plt
%библиотек matplotlib встроенное установка серверной части matplotlib-до этого 'встроенный' серверная часть: С этого бэкэнда, выход построения команды отображается внутри приложения, как блокнот Jupyter, непосредственно ниже код ячейки, которая его породила. Затем полученную участков будут храниться в документе Блокнот.
Вы можете изменить бэкенд, используемый matplotlib, включив:
import matplotlib
matplotlib.use('TkAgg')
перед вашей строкой 1 import matplotlib.pyplot as pl
, так как она должна быть установлена первой. Более подробную информацию смотрите в этом ответе.
(Есть и другие варианты бэкенда, но изменение бэкенда на TkAgg
помогло мне, когда у меня была похожая проблема).
При тестировании с https://matplotlib.org/examples/animation/dynamic_image.html я просто добавляю
%matplotlib notebook
что вроде бы работает, но немного неровно. Мне приходилось останавливать ядро время от времени :-(
Я пытаюсь сделать 3D кластеризации похожие на к науке учебник данных. Я сначала думал, что фиг.показать()
может быть правильным, но получил такое же предупреждение...
Кратко рассматривается Matplot3d.. но потом я попробовал ПЛТ.показать () и отображается моя 3D модель именно так, как предполагалось. Я предполагаю, что это тоже имеет смысл. Это будет эквивалентно вашей СТМ.показать()
С помощью Python 3.5 и Jupyter ноутбука
Если вы используете какой-либо профилирования библиотек, как pandas_profiling, попробуйте закомментировать их и выполнить код. В моем случае я использовал pandas_profiling чтобы создать отчет для выборки данных обучения. закомментировав импорт pandas_profiling помог мне решить мою проблему.
По ошибке "библиотек matplotlib в настоящее время использование неграфических данных” также произошло, когда я пытался отобразить участок с помощью команды фиг.показать()
. Я обнаружил, что в блокноте Jupyter, команда `рис, топор = ПЛТ.сюжетных линий () и команда plot должны быть в той же ячейке, чтобы сюжет быть вынесено.
Например, следующий код будет успешно показывают штриховой график в[5]:
В [3]:
import matplotlib.pyplot as plt
%matplotlib inline
В [4]:
x = 'A B C D E F G H'.split()
y = range(1, 9)
В [5]:
fig, ax = plt.subplots()
ax.bar(x, y)
Из[5]: (контейнер объекта 8 художников)
Успешный штриховой график выхода
С другой стороны, следующий код не будет показывать сюжет,
В [5]:
fig, ax = plt.subplots()
Из[5]:
В [6]:
ax.bar(x, y)
Из[6]: (объект-контейнер из 8 художников)
В[6] есть только заявление о том, что "объект-контейнер из 8 художников", но нет бара сюжет показали.
У меня была такая же ошибка. Затем я использовал <БР>
импорт библиотек matplotlib библиотек matplotlib.использовать('WebAgg')`
он отлично работает.(Вы должны установить "Торнадо" для просмотра в интернете, (пункт Установить торнадо
))
Python версии: 3.7 библиотек matplotlib версия: 3.1.1
%ноутбука библиотек matplotlib работал для меня.
Но требует времени для загрузки, и но понятно.