Aller au contenu

Multilayer perceptron

Classe les tumeurs du sein en bénignes ou malignes avec un réseau de neurones écrit en NumPy : couches, fonctions de perte et optimiseurs derrière une API façon Keras.

En bref
  • 97,4 % préc. validation
  • 569 échantillons

Ma contributionUne API façon Keras : un modèle CustomSequential empilant des couches Dense.

RÔLE
Solo
CONTEXTE
École 42 · projets IA
STATUT
Terminé
RÉSULTAT
96,5–97,4 % de précision en validation sur trois essais 80/20 (graine 42) ; l'essai principal, avec arrêt anticipé sur la perte de validation, a atteint 96,5 %.
MISE À JOUR
26 sept. 2026
1

Données

Wisconsin Breast Cancer (Diagnostic), UCI : 569 tumeurs décrites par des mesures de noyaux cellulaires, étiquetées bénignes ou malignes.

2

Ce que j'ai construit

Solo

  1. Une API façon Keras : un modèle CustomSequential empilant des couches Dense.
  2. Passe avant et rétropropagation, avec les pertes entropie croisée binaire, entropie croisée catégorielle et MSE.
  3. Optimiseurs SGD et Adam, et arrêt anticipé sur la perte de validation.
  4. Un notebook Colab qui entraîne et évalue le modèle de bout en bout.
3

Choix clés

Reproduire l'API Keras
J'ai suivi la structure de la documentation officielle de Keras, avec les couches, les pertes et les optimiseurs comme classes distinctes derrière un unique objet modèle. Cela a gardé le code modulaire au lieu d'un tas de fonctions qui enfle.
4

Résultats

90 %100 %Adam, 24-24, essai A97.4 %Arrêt anticipé, essai principal96.5 %Adam, 24-24, essai B94.7 %
Jeu de données Wisconsin Breast Cancer (Diagnostic), 569 échantillons. Un seul découpage 80/20 (--valid_ratio 0.2, graine 42) ; le jeu de validation sert aussi à l'arrêt anticipé ; pas de jeu de test séparé. Source : sorties de MLP_Presentation.ipynb. Les essais A et B partagent l'architecture et l'optimiseur ; l'écart entre eux tient à la variation d'un essai à l'autre. Cellules 27 (essai A), 22 (essai principal) et 29 (essai B) du notebook.

96,5–97,4 % de précision en validation sur trois essais 80/20 (graine 42) ; l'essai principal, avec arrêt anticipé sur la perte de validation, a atteint 96,5 %.

5

Limites

  • Le jeu de validation sert aussi à l'arrêt anticipé, et il n'y a pas de jeu de test séparé : ces scores sont donc optimistes.
  • Les logs montrent du surapprentissage : la précision d'entraînement atteint 1.0 et la perte d'entraînement tombe à ~0 tandis que la perte de validation grimpe à 0,66–0,73 à l'époque 50.
  • Un seul découpage de 569 échantillons : une autre graine aléatoire pourrait déplacer le score de quelques points. Une validation croisée donnerait une fourchette.

Des questions sur ce projet ? → Écrivez-moi