Skip to content

MatLBS/multilayer_perceptron_42

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🇬🇧 multilayer_perceptron_42

If you enjoy this project, feel free to give it a star ⭐!

Introduction

The goal of this project is to build a multi-layer perceptron (MLP) from scratch to create a model that predicts the outcome of a breast cancer diagnosis.

Multilayer perceptron

The multilayer perceptron is a feedforward network (meaning that the data flows from the input layer to the output layer) defined by the presence of one or more hidden layers, as well as an interconnection of all the neurons of one layer to the next.

Screenshot from 2025-09-25 15-44-50

The diagram above represents a network containing 4 dense layers (also called fully connected layers). Its inputs consist of 4 neurons and its output consists of 2 (perfect for binary classification). The weights of one layer to the next are represented by two-dimensional matrices noted Wlj lj+1 . The matrix Wl0l1 is of size (3, 4) for example, as it contains the weights of the connections between layer l0 and layer l1. The bias is often represented as a special neuron which has no inputs and an output always equal to 1. Like a perceptron, it is connected to all the neurons of the following layer (the bias neurons are noted blj on the diagram above). The bias is generally useful as it allows one to “control the behavior” of a layer.

Perceptron

The perceptron is the type of neuron that the multilayer perceptron is composed of. It is defined by the presence of one or more input connections, an activation function, and a single output. Each connection contains a weight (also called a parameter) which is learned during the training phase.

Screenshot from 2025-09-25 15-46-18

Two steps are necessary to get the output of a neuron. The first one consists in computing the weighted sum of the outputs of the previous layer with the weights of the input connections of the neuron, which gives

Screenshot from 2025-09-25 15-47-18

The second step consists in applying an activation function on this weighted sum. The output of this function is the output of the perceptron and can be understood as the threshold above which the neuron is activated (activation functions can take many forms, and you are free to choose whichever one you want depending on the model to train. Here are some of the most frequently used ones to give you an idea: sigmoid, hyperbolic tangent, and rectified linear unit).

Usage

  1. Clone the repository
git clone https://github.com/MatLBS/multilayer_perceptron_42.git
cd multilayer_perceptron_42
  1. Create a virtual environment and install dependencies
python -m venv myenv
source myenv/bin/activate
pip install -r requirements.txt

Dataset preview

python srcs/describe.py dataset/data.csv
Screenshot from 2025-09-25 15-53-31
python srcs/histogram.py dataset/data.csv
Screenshot from 2025-09-25 15-54-11

Training & Prediction

Training of an MLP model

python srcs/mlp_training.py --file dataset/data.csv --layer 24 24 --epochs 2000 --batch_size 32 --learning_rate 0.001
Screenshot from 2025-09-25 15-57-08 Screenshot from 2025-09-25 15-56-34

Prediction and evaluation

You can predict the test data and evaluate your model by running below command.

python srcs/mlp_predict.py mlp_weights.npz mlp_topology.json dataset/data.csv
Screenshot from 2025-09-25 15-59-10

đŸ‡«đŸ‡· multilayer_perceptron_42

Si tu apprĂ©cies ce projet, n’hĂ©site pas Ă  lui donner une Ă©toile ⭐ !

Introduction

L’objectif de ce projet est de construire un perceptron multicouche (MLP) “from scratch” pour crĂ©er un modĂšle capable de prĂ©dire l’issue d’un diagnostic du cancer du sein.


Perceptron multicouche (MLP)

Le perceptron multicouche est un rĂ©seau “feedforward” (ce qui signifie que les donnĂ©es circulent de la couche d’entrĂ©e Ă  la couche de sortie) dĂ©fini par la prĂ©sence d’une ou plusieurs couches cachĂ©es, ainsi que par l’interconnexion de tous les neurones d’une couche Ă  la suivante.

Screenshot from 2025-09-25 15-44-50

Le schĂ©ma ci-dessus reprĂ©sente un rĂ©seau contenant 4 couches denses (ou “fully connected”). Ses entrĂ©es sont constituĂ©es de 4 neurones et sa sortie de 2 (parfait pour une classification binaire). Les poids d’une couche Ă  l’autre sont reprĂ©sentĂ©s par des matrices notĂ©es Wlj lj+1. Par exemple, la matrice Wl0l1 est de taille (3, 4), car elle contient les poids des connexions entre la couche l0 et la couche l1.

Le biais est souvent reprĂ©sentĂ© comme un neurone spĂ©cial qui n’a pas d’entrĂ©e et une sortie toujours Ă©gale Ă  1. Comme un perceptron, il est connectĂ© Ă  tous les neurones de la couche suivante (les neurones de biais sont notĂ©s blj sur le schĂ©ma ci-dessus). Le biais est gĂ©nĂ©ralement utile car il permet de “contrĂŽler le comportement” d’une couche.

Perceptron

Le perceptron est le type de neurone qui compose le perceptron multicouche. Il est dĂ©fini par la prĂ©sence d’une ou plusieurs connexions d’entrĂ©e, d’une fonction d’activation et d’une seule sortie. Chaque connexion possĂšde un poids (aussi appelĂ© paramĂštre) qui est appris lors de la phase d’entraĂźnement.

Screenshot from 2025-09-25 15-46-18

Deux Ă©tapes sont nĂ©cessaires pour obtenir la sortie d’un neurone. La premiĂšre consiste Ă  calculer la somme pondĂ©rĂ©e des sorties de la couche prĂ©cĂ©dente avec les poids des connexions d’entrĂ©e du neurone, ce qui donne :

Screenshot from 2025-09-25 15-47-18

La seconde Ă©tape consiste Ă  appliquer une fonction d’activation sur cette somme pondĂ©rĂ©e. La sortie de cette fonction est la sortie du perceptron et peut ĂȘtre comprise comme le seuil au-delĂ  duquel le neurone s’active (les fonctions d’activation peuvent prendre diffĂ©rentes formes, et tu es libre de choisir celle qui te convient selon le modĂšle Ă  entraĂźner. Voici quelques-unes des plus utilisĂ©es : sigmoĂŻde, tangente hyperbolique, et rectified linear unit).

Utilisation

  1. Clone le dépÎt
git clone https://github.com/MatLBS/multilayer_perceptron_42.git
cd multilayer_perceptron_42
  1. Crée un environnement virtuel et installe les dépendances
python -m venv myenv
source myenv/bin/activate
pip install -r requirements.txt

Aperçu du dataset

python srcs/describe.py dataset/data.csv
Screenshot from 2025-09-25 15-53-31
python srcs/histogram.py dataset/data.csv
Screenshot from 2025-09-25 15-54-11

Entraßnement & Prédiction

Entraünement d’un modùle MLP

python srcs/mlp_training.py --file dataset/data.csv --layer 24 24 --epochs 2000 --batch_size 32 --learning_rate 0.001
Screenshot from 2025-09-25 15-57-08 Screenshot from 2025-09-25 15-56-34

Prédiction et évaluation

Tu peux prédire les données de test et évaluer ton modÚle en lançant la commande suivante :

python srcs/mlp_predict.py mlp_weights.npz mlp_topology.json dataset/data.csv
Screenshot from 2025-09-25 15-59-10

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published