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

[Dúvida] Como implementar o KNN em linguagem C?

Preciso implentar o algoritmo de classificação KNN para um projeto pessoal, em linguagem C, como fazer isso?

Os dados que preciso analisar estão disponíveis nesse link: https://www.kaggle.com/datasets/yasserh/breast-cancer-dataset

  • Preciso classificar os tumores em malignos (cancerígenos) ou benignos (não cancerígenos)
  • 80% dos dados devem ser usados para treinamento dos modelos e 20% para a validação.
  • Vou trabalhar com o vs code.
  • Preciso apresentar os critérios de avaliação de desempenho do método.

(Tudo o que vi até agora estava em python, e não sei como fazer isso em C ;-;)

Alguém pode me ajudar? rsrs

1 resposta
solução!

Oi Nathalia, tudo bem?

É importtante destacar que a linguagem C não possui bibliotecas prontas para aprendizado de máquina como o Python, então você precisará implementar a lógica do KNN do zero. Python é amplamente utilizado em machine learning devido à vasta disponibilidade de bibliotecas otimizada. Então, a tarefa vai ser desafiadora, mas ela é possível.

Primeiro, para carregar os dados do arquivo CSV, você pode utilizar funções da biblioteca padrão de C, como fopene fgets , para ler e processar cada linha. Após carregar os dados, como você mencionou que precisa usar 80% para treinamento e 20% para validação, será necessário dividir o conjunto de dados. Para isso, uma abordagem comum é embaralhar os dados antes de separá-los em dois arrays distintos.

Depois de ler e separar os dados, você poderá armazenar as amostras e suas classificações em uma struct. Em seguida, construir o modelo KNN e as métricas para avaliação. Caso queira um exemplo, encontrei um artigo K-NN Classification in C++ que implementa KNN em C++, neste caso, você terá que adaptar o código para C, fazendo algumas modificações.

Abaixo deixo outros links que poderá te ajudar nessa tarefa:

Espero ter ajudado.

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado