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()