Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como descobrir qual categoria é o 0 ou o 1?

Sobre a matriz de confusão, o professor Thiago mencionou que os 0s seriam os dados com diagnostico B (benigno), e os 1s os dados com diagnostico M (maligno), como posso checar essa informação? Já que os dados de y_train e y_test são passados para o RandomForestClassifier ainda com as categorias B e M.

Desde já agradeço!

1 resposta
solução!

Olá, Rafael! Tudo tranquilo com você?

Você pode checar essa informação de algumas formas, aqui vou apresentar duas delas. Se não for exatamente o que procura nos retorne por aqui, tudo bem?

  • 1: Com o método value_counts()
teste_y.value_counts()

Saída:

B    105
M     66
Name: diagnostico, dtype: int64

Como podemos observar a quantidade total de câncer benigno é 105 e de câncer maligno é 66 no teste_y, que é a variável passada para a realizar a construção da matriz de confusão. Agora vamos voltar a nossa matriz gerada em aula:

Matriz de confusão onde o eixo y representa os valores reais e o eixo x os valores preditos. Em [0, 0] está o valor 100, que representa o número de câncer benigno que foram classificados como benignos. Em [0, 1] está o valor 5, que representa o número de câncer benigno que foram classificados como malignos. [1, 0] está o valor 8 que representa o número de câncer malignos que foram classificados como benignos. Em [1, 1] está o valor 58 que representa o valor de câncer malignos que foram classificados como malignos

Se somarmos os valores da matriz de confusão do eixo Y veremos que na linha 0 soma resulta em 105, que de acordo com nosso .value_counts() representa o câncer do tipo 'B'. Se somarmos os valores da linha 1 veremos que resulta em 66, que de acordo com o .value_counts() é o número de câncer do tipo 'M'. Com isso você consegue comprovar que a linha 0 são os câncer 'Benignos' e a linha 1 os câncer classificados como 'Malignos'.

  • 2: Utilizando a classe ConfusionMatrixDisplay:

A outra forma de você verificar isso é mais legal por ser visual e pode ser realizada de acordo com o código abaixo:

from sklearn.metrics import ConfusionMatrixDisplay

ConfusionMatrixDisplay.from_predictions(teste_y, classificador.predict(teste_kbest), labels=teste_y.unique())
plt.grid(False)

Saída:

Matriz de confusão onde o eixo y representa os valores reais e o eixo x os valores preditos. No lugar dos 0's e 1's estão o labels. A linha 0 estpa como 'B' e na linha 1 está 'M'. Em [B, B] está o valor 100, que representa o número de câncer benigno que foram classificados como benignos. Em [B, M] está o valor 5, que representa o número de câncer benigno que foram classificados como malignos. [M, B] está o valor 8 que representa o número de câncer malignos que foram classificados como benignos. Em [M, M] está o valor 58 que representa o valor de câncer malignos que foram classificados como malignos

Dessa forma você consegue visualizar exatamente qual linha representa o câncer benigno (B) e o maligno (M). Para obter esse resultado utilizei o método from_predictions da classe ConfusionMatrixDisplay. Você pode está conferindo mais detalhes sobre essa classe na documentação. Essa classe tem o objetivo de permitir a visualização da matriz de confusão sem o uso de bibliotecas externas, como o seaborn.

Espero ter ajudado, mas se ainda persistir alguma dúvida estou sempre à disposição.

:)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!