1
resposta

[Bug] Erro ao plotar o desempenho da aprendizagem: parâmetro axes

Ao tentar plotar os gráficos referentes ao desempenho de aprendizagem de nosso modelo, utilizando do código fornecido:

fig, ax = plt.subplots(1,2, figsize=(14,5))
ax[0].plot(historico.history['loss'], color='#111487', linewidth=3, label="Perda de treinamento")
ax[0].plot(historico.history['val_loss'], color='#EFA316', linewidth=3, label="Perda da validação",axes =ax[0])
legend = ax[0].legend(loc='best', shadow=True)

ax[1].plot(historico.history['categorical_accuracy'], color='#111487', linewidth=3, label="Acurácia de treinamento")
ax[1].plot(historico.history['val_categorical_accuracy'], color='#EFA316', linewidth=3, label="Acurácia de validação")
legend = ax[1].legend(loc='best', shadow=True)

plt.suptitle('Desempenho do treinamento', fontsize = 18)
plt.show()

Recebe-se o seguinte erro:

TypeError                                 Traceback (most recent call last)
<ipython-input-37-a8ef4f24ec0b> in <cell line: 3>()
      1 fig, ax = plt.subplots(1,2, figsize=(14,5))
      2 ax[0].plot(historico.history['loss'], color='#111487', linewidth=3, label="Perda de treinamento")
----> 3 ax[0].plot(historico.history['val_loss'], color='#EFA316', linewidth=3, label="Perda da validação",axes =ax[0])
      4 legend = ax[0].legend(loc='best', shadow=True)
      5 

/usr/local/lib/python3.10/dist-packages/matplotlib/axes/_axes.py in plot(self, scalex, scaley, data, *args, **kwargs)
   1719         """
   1720         kwargs = cbook.normalize_kwargs(kwargs, mlines.Line2D)
-> 1721         lines = [*self._get_lines(self, *args, data=data, **kwargs)]
   1722         for line in lines:
   1723             self.add_line(line)

TypeError: _process_plot_var_args.__call__() got multiple values for argument 'axes'

Explicação: O parâmetro axes=ax[0] é desnecessário porque a função plot em Matplotlib não precisa de um argumento adicional para identificar em qual eixo o gráfico deve ser desenhado. Isso já é definido quando você chama ax[0].plot(...), que indica que o gráfico deve ser criado especificamente no eixo ax[0].

Solução:

fig, ax = plt.subplots(1,2, figsize=(14,5))
ax[0].plot(historico.history['loss'], color='#111487', linewidth=3, label="Perda de treinamento")
ax[0].plot(historico.history['val_loss'], color='#EFA316', linewidth=3, label="Perda da validação")
legend = ax[0].legend(loc='best', shadow=True)

ax[1].plot(historico.history['categorical_accuracy'], color='#111487', linewidth=3, label="Acurácia de treinamento")
ax[1].plot(historico.history['val_categorical_accuracy'], color='#EFA316', linewidth=3, label="Acurácia de validação")
legend = ax[1].legend(loc='best', shadow=True)

plt.suptitle('Desempenho do treinamento', fontsize = 18)
plt.show()
1 resposta

Oi, Éric! Como vai?

Obrigada por compartilhar seu código com a comunidade Alura, com certeza ajudará outros alunos!

Continue empenhado e não hesite em retornar ao fórum sempre que tiver dúvidas ou quiser compartilhar mais insights.

Abraços e bons estudos!