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

Acurácia de RFE dando 92,98%

Bom dia, pessoal! Estive seguindo as instruções do professor, mas terminei ficando com uma acurácia maior que a demonstrada no vídeo. Alguém saberia dizer o que poderia estar ocasionando isso?

Muito obrigado pela atenção!

Meu código

treinoX, testeX, treinoY, testeY = train_test_split(exames.drop(columns=['id', 'diagnostico', 'exame_4', 'exame_24',  'exame_29', 'exame_33']), exames['diagnostico'], test_size=0.3)
modeloRF = RandomForestClassifier(n_estimators=100, random_state=1234)
modeloRF.fit(treinoX, treinoY)
selecionarRFE = RFE(estimator=modeloRF, n_features_to_select=5, step=1)
selecionarRFE.fit(treinoX, treinoY)
treinoRFE = selecionarRFE.transform(treinoX)
testeRFE = selecionarRFE.transform(testeX)

modeloRF = RandomForestClassifier(n_estimators=100, random_state=1234)
modeloRF.fit(treinoRFE, treinoY)
print("Acurácia de %.2f%%" % (modeloRF.score(testeRFE, testeY) * 100))

matrizConfusao = confusion_matrix(testeY, modeloRF.predict(testeRFE))
sns.set(font_scale=2)
sns.heatmap(matrizConfusao, annot=True, fmt='d').set(xlabel='Predição', ylabel='Real')

Meu output Print onde está escrito "Acurácia de 92,98%" seguido de uma matriz de confusão com eixo X rotulado de "Predição" e eixo Y de "Real". Os eixos são divididos em valores 0 e 1, gerando quatro quadrantes. No quadrante referente ao câncer benigno devidamente identificado pelo modelo, há 99 elementos; no quadrante referente ao câncer benigno identificado pelo modelo como maligno, há 6 elementos; no quadrante referente ao câncer maligno identificado pelo modelo como benigno, há 6 elementos; no quadrante referente ao câncer maligno devidamente identificado pelo modelo, há 60 elementos.

1 resposta
solução!

Olá Eduardo, tudo bem? Espero que sim!

Provavelmente ocorreu porque os dados escolhidos aleatoriamente pelo train_test_split() foram diferentes dos dados no curso e a escolha dos dados interfere no treinamento do modelo e consequentemente no resultado final.

Para conseguir sempre o mesmo resultado, é importante utilizar um valor de SEED tanto para a escolha dos dados quanto para a execução do modelo.

Fazemos isso com o parâmetro random_state.

train_test_split(..., random_state = 1234)

Bons estudos!