Detectando câncer de mama com KNN

Entre para nossa lista e receba conteúdos exclusivos!

cancer de mama com KNN

No artigo anterior, conhecemos o KNN, o algoritmo de IA mais simples. Hoje, iremos usar esse algoritmo para detectar câncer de mama. Ou seja, na prática, iremos fazer um “robô doutor” bem simples, que será capaz de dizer se uma biópsia de massa mamária é maligna ou benigna. Dito isso, vamos começar.

Detectando câncer de mama com KNN: Dataset

O conjunto de dados dispõe de 569 amostras de massas mamárias. Desse total, 357 são benignas e 212 são malignas. cada amostra possui 32 atributos, sendo alguns desses atributos medidas de:

  • raio da massa
  • textura da massa
  • perímetro da massa
  • área superficial da massa
  • simetria da massa

Além, é claro, de outros atributos que não entrarei em detalhe.

Detectando câncer de mama com KNN: Obtendo conjunto de treino e teste

Iremos separar o nosso conjunto de dados em conjunto de treino e teste. Falaremos sobre isso melhor em outra ocasião, mas, de forma resumida, o conjunto de treino serão os dados que o algoritmo de fato vai “treinar”. Já o conjunto de teste vai ser o conjunto que iremos fazer os testes de acerto do KNN. 

Não faz sentido usar o mesmo conjunto para treino e teste, pois há uma tendência maior de o algoritmo acertar, nesse caso. Mas não necessariamente ele acertaria em outras situações. Podemos ler os dados no seguinte código:

#importando os pacotes importantes

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#modelo knn
from sklearn.neighbors import KNeighborsClassifier as knn

#lendo dataset com pandas
df = pd.read_csv('wdbc.csv')

#convertendo dados para array numpy
data = df.to_numpy()

Agora, podemos selecionar as 100 primeiras amostras do conjunto de dados para teste, e as demais para treino.

#separando os dados para teste

atributosTeste = data[0:100,2:]
atributosTreino = data[100:,2:]

classesTeste = data[0:100,1]
classesTreino = data[100:,1]

  Detectando câncer de mama com KNN: Otimizando o K

Feito isso, vamos tentar otimizar o K do nosso KNN. No post sobre KNN, discutimos sobre como diferentes K’s podem mudar os resultados das classificações. Faremos, então, o teste de acurácia do modelo para vários K’s, de 1  a 50, para ser mais exato.

#encontrando melhor k para o knn de entre 1 e 50
k_acuracia = np.zeros((50))
#calcula acuracia para knn com 1 a 50 vizinhos mais proximos 
for i in range(1,50):
  modeloKnn = knn(n_neighbors = i)
  modeloKnn.fit(atributosTreino, classesTreino)
  k_acuracia[i] = modeloKnn.score(atributosTeste,classesTeste)

Vamos, agora, plotar as acurácias para cada valor de K e observar o melhor K.

#criando o gráfico
#plotando cada acurácia, para cada k
plt.figure(figsize = (10,6))
plt.plot( range(1,50), k_acuracia[1:50], label = 'Acurácia')
plt.plot(k_acuracia.argmax(),k_acuracia.max(), 'go')
plt.xlabel('K')
plt.ylabel('Acurácia média')
plt.legend()
plt.title('Desempenho dos para cada K')

Output:

Fonte: O autor

Podemos observar que para K igual a 1, a acurácia foi a maior, cerca de 84%. O KNN com k igual a 1 se trata do algoritmo de distância mínima, ou seja, classificamos uma amostra em relação a amostra mais próxima. 

Conclusão

Em suma, podemos concluir que o KNN conseguiu acertar a malignidade de 84% das massas mamárias do conjunto de teste. Esse resultado é bem significativo, visto que esse algoritmo é muito simples de ser utilizado. Vale lembrar, também, que se utilizarmos outras partes do dataset como conjunto de teste, podemos ter acurácias diferentes. Por isso, o ideal é fazer uma validação cruzada. Falaremos sobre isso em posts futuros. Até a próxima.

Referências

https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(diagnostic)

Câncer de mama ícones criados por Freepik – Flaticon

Outros Artigos

A Guerra Fria: Principais Eventos e Consequências
História

A Guerra Fria: Principais Eventos e Consequências

O artigo oferece uma análise dos principais eventos da Guerra Fria, como a crise dos mísseis de Cuba, a corrida espacial e a queda do Muro de Berlim. Discute as consequências políticas, econômicas e sociais desse período, além de seu impacto nas relações internacionais contemporâneas.

Ciclo do Nitrogenio
Curiosidades

Ciclo do Nitrogênio: Importância e Etapas

Este post explica as etapas do ciclo do nitrogênio, desde a fixação até a desnitrificação. Discute a importância desse ciclo para os ecossistemas e a agricultura, além de abordar os impactos da atividade humana sobre o ciclo natural do nitrogênio.

Fotossíntese
Biológicas

Fotossíntese: Processo e Importância para os Ecossistemas

Este post aborda o processo da fotossíntese, explicando as fases clara e escura, os pigmentos envolvidos e a importância desse processo para a vida na Terra. Discute também a relação da fotossíntese com a produção de oxigênio e a sustentabilidade dos ecossistemas.

Legal

® 2021-2024 Meu Guru | 42.269.770/0001-84 • Todos os direitos reservados

Entre para nossa lista e receba conteúdos exclusivos!