Mémoire 5
Mémoire 5
Mémoire 5
Matricule : 2020022143
Octobre 2023
REPUBLIQUE DEMOCRATIQUE DU CONGO
ENSEIGNEMENT SUPERIEUR ET UNIVERSITAIRE
Matricule : 2020022143
Octobre 2023
I
DEDICACE
Je rends hommage à tous les scientifiques qui ont posé les bases de ce domaine
d'étude et à ceux qui continuent de le faire évoluer. Vos travaux ont ouvert de
nouvelles perspectives et ont éclairé notre compréhension du monde qui nous
entoure.
Je suis reconnaissant envers mes collègues scientifiques, avec qui j'ai partagé des
discussions enrichissantes, des idées novatrices et des moments de collaboration.
Votre esprit critique et votre passion pour la science ont renforcé ma propre
motivation.
Enfin, je souhaite exprimer ma gratitude envers toutes les personnes qui ont
contribué à la réalisation de ce mémoire, que ce soit par leurs précieux
commentaires, leur soutien logistique ou leur participation aux discussions
scientifiques.
REMERCIEMENT
En fin, je suis reconnaissant envers toutes les personnes qui ont joué un rôle dans la
réalisation de ce mémoire. Votre soutien, votre expertise et votre encouragement ont
été d'une valeur inestimable. Merci du fond du cœur.
INTRODUCTION GENERALE
Connaitre de son état de santé en avance est toujours préférable que d’être
surpris de l’évolution de la maladie sans se rendre compte comme le dit une loi de la
nature, vaut mieux prévenir que guérir. Aujourd’hui, le système informatique reste le
moyen sûr pour une prédiction dans le domaine de la médecine. Actuellement le
monde connait une avance technologique dans la prévention dans le domaine médical.
En 2015, il est à l’origine d’environ 8.8 millions de décès dans le monde. Détecté à un
stade avancé, il réduit considérablement l’espérance de vie à moyen et long terme :
moins de 50% des patients vivent plus de 5 ans après la détection de la maladie. Ainsi,
le cancer est un problème sanitaire majeur qui semble faire l’objet de nombreuses
recherches afin de trouver une solution permettant de réduire cette forte mortalité,
notamment avec l’avancée de la technologie [2].
L’apprentissage supervisé est basé sur les données fournies en entrée doivent
être “étiquetées” (labeled data). En d’autres termes, elles doivent suivre un pattern
connu par l’algorithme afin d’être traitées [1]. Nous allons travailler dans le cadre de ce
travail sur la prédiction de cancer qui est une tâche importante dans l'analyse et
l'exploration de celui-ci. La prédiction de cancer donc, consiste à prédire si la personne
aura le cancer du foie dans le futur en se basant sur des informations existantes
observées.
L'objectif est de donner un sens aux données dans le contexte d’une question
spécifique. L’apprentissage supervisé est utilisé pour des problèmes de classification
et de régression, comme la détermination de la catégorie à laquelle appartient un
article de presse, ou la prévision du volume des ventes pour une date future donnée.
- L’analyse de besoins : dans cette phase, nous avons analysé les besoins du
système par l’élaboration des diagrammes : cas d’utilisation, activité, classes
pour décrire respectivement les services offerts, le déroulement de
processus, les structures de données médicales utilisées dans la prédiction
de cancer du foie.
6
• Le développement des moyens informatiques fait que l’on est confronté à des
données de plus en plus complexes.
Les arbres de régression (Regression Tree) permettent de prédire une quantité réelle
(par exemple, le prix d'une maison ou la durée de séjour d'un patient dans un hôpital),
dans ce cas la prédiction est une valeur numérique.
Forêt aléatoire : La forêt aléatoire, comme son nom l'indique, se compose d'un
grand nombre d'arbres de décision individuels qui fonctionnent comme un
ensemble. Chaque arbre individuel dans la forêt aléatoire crache une prédiction
de classe et la classe avec le plus de votes devient la prédiction.
En termes simples : la forêt aléatoire crée plusieurs arbres de décision et les fusionne
pour obtenir une prédiction plus précise et plus stable.
L'un des grands avantages de la forêt aléatoire est qu'elle peut être utilisée à la fois
pour les problèmes de classification et de régression, qui constituent la majorité des
systèmes d'apprentissage automatique actuels. Examinons la forêt aléatoire dans la
classification, car la classification est parfois considérée comme la pierre angulaire de
l'apprentissage automatique.
Supposons qu'il existe deux classes de données. Une machine à vecteurs de support
trouve un hyperplan ou une frontière entre les deux classes de données qui maximise
la distance entre les deux classes (voir ci-dessous). De nombreux niveaux peuvent
séparer les deux classes, mais un seul niveau peut maximiser la marge ou
l'espacement entre les classes.
y=f(x)
Cela se fait sur plusieurs étapes : pour mieux comprendre, nous prendrons
comme exemple un jeu de données où x représente les caractéristiques d'un
16
Enfin les systèmes experts peuvent raisonner sur des données partiellement
connues avec de la logique floue par l’utilisation de coefficients ou poids associés à
certaines règles, c’est-à-dire des connaissances approximatives ou incertaines
comme « la température du four est très élevée », « l’enfant est grand », « le contrat
est important » …
Conclusion partielle
Dans ce chapitre, il a été question de parler sur la théorie fonctionnelle sur les
concepts nécessaires de notre sujet, dont nous avons l’intelligence artificielle,
l’apprentissage supervisé, les systèmes de base des connaissances, le moteur
d’inférence. Ce chapitre nous a permis de comprendre le cadre théorique de notre
travail afin de comprendre le fonctionnent de notre solution informatique. Dans le
chapitre suivant, nous allons présenter une étude de diagnostic du processus existant.
21
1 : Analyse métier
2.1.1. Présentation du contexte
Le cancer du foie est un cancer silencieux, c’est-à-dire qu’il ne provoque des
symptômes qu’à un stade avancé de la maladie. C’est pourquoi, plus ce cancer est
détecté tôt, plus sa prise en charge sera optimale.
La consommation de tabac est associée à une augmentation du risque de plusieurs
cancers dont le cancer du foie. Un cancer du foie survient lorsque des cellules du foie,
initialement normales, se transforment et se multiplient de façon anarchique jusqu’à
former une tumeur maligne.
Le médecin va tout d’abord rechercher si vous avez des facteurs de risque de cancer
du foie et notamment si vous êtes atteint d’une cirrhose. En effet, le cancer du foie ou
carcinome hépatocellulaire (CHC) survient dans 90 % des cas chez les patients
atteints de cirrhose. L’obésité, la consommation excessive ou régulière d’alcool et
les hépatites B et C sont également des facteurs de risque à prendre en compte.
N° ACTEUR DESCRIPTION
2 : MODELISATION METIER
2.2.1. Diagramme de contexte métier
Le diagramme de contexte métier est basé sur la visualisation graphique de
l’interaction des données et des processus métier à travers un système d’information.
Ce diagramme comporte trois composants principaux qui incluent des entités
externes, des processus système, des flux de données. C’est aussi l'ensemble d’objets
échangés (produits, services et/ou informations) entre un système organisationnel (la
boîte noire) et des acteurs de l'environnement externe du système à l'étude [2].
uc Use CaseMetier
Solliciter
traitement Examiner
patients
PATIENT
payer LABORANTIN
montant
consulter
patient
administrer
INFIRMIER traitement
suivre prescrire
traitement traitement
MEDECIN
CONSULTATION
- dateC: date
- dateRendezVous: date LABORANTIN FICHE
- diagnotics: char
- heureService: char - dateF: char
- numCons: int
- nomL: char - MontantF: double
- plaintesC: char
- NumL: int - motif: char
+ addDiagno(): void - numOrdre: int - NomF: char
+ addPlaintes(): void - NumF: int
+ creer(): void 1..*
+ editer(): void 1 1
1..* examiner
consulter appartenir
1
1 etablir
MEDECIN
PATIENT 1
- nomM: char
- age: char
- nOrdre: int
consulter - genre: char
- NumM: int
- nomP: char
- specialité: char 1..* 1 - numP: int
+ consulter(): void 1..*
+ traiter(): void 1
RECEPTIONISTE
administrer traitement - NomR: char
1 - NumRec: int
+ EtablirFiches(): void
INFIRMIER
- heureService: char
- nomInf: char
- numInf: int
+ adminitrerTraitement(): void
3 : critique métier
2.3.1. Points forts
Apres examens, là on peut affirmer l’existence de cancer du foie sans avoir
doute.ca permet au médecin de suivre particulièrement le cas du patient concerné.il
arrive aussi parfois que les médecins mettent leurs idées pour traiter un cas comme
celui du cancer du foie ensemble avec ces collègues.
2.3.3. Suggestions
Nous proposons un système de prédiction de cette maladie pour aide le corps
médical et les patients à connaitre leurs pourcentages à pouvoir attraper cette maladie
et recevoir des médicaments ou soins pour leur bien-être. Le système nous permettra
de pouvoir prédire le cancer de foie de savoir à quel pourcentage, l’utilisateur est-il
exposé à pouvoir attrapée cette maladie et lui propose un remède.
Dans le chapitre suivant, nous allons présenter et concevoir notre nouveau système.
28
uc Contexte
SYS_PREDICATION DU Medecin
CANCER DU FOIE
Patient
«System»
KNN ALGO
Admin
Nous allons recenser les fonctionnalités de notre système sous forme de cas
d’utilisation UML. Pour ce faire, une référence aux objectifs du système est impérative
pour nous. La logique de prédiction désigne les moyens, les outils et les méthodes qui
permettent de collecter, consolider, modéliser et restituer les données, matérielles ou
immatérielles, pour offrir une aide à la décision et permettre à un décideur d'avoir une
vue d'ensemble de l'activité traitée.
Fixer les objectifs liés à la mise en place d'un choix d’un mode de vie ou
habitude.
Identifier et contourner les risques possibles.
uc Predicton cencer
Consulter
Obtenir
prédiction
diagnostics
«include» intelligents
Medecin
S'authentifier
Interroger
état cancer de «include» «include»
foie Alimenter
Patient DataSet
«include» «System»
KNN ALGO
fournir ses
Gérer
plaintes
utilisateur
Admin
Portabilité
Sécurité
Maintenabilité
Efficacité
Sécurité
Ergonomie
• Scénarios alternatifs
- L’application affiche un message d’erreur précisant que le mail n’est pas valide.
Le cas d’utilisation reprend au point 1.
sd créer utilisateur
Admin
EcranUtilisateur GestionUtilisateur Utilisateur
ref
S'authentifier
creerUser()
checkNomPrenom()
checkEMail()
genererIdentifiantMotDePasse()
creer()
envoiMail()
message()
Mail de confirmation envoyé à
utilisateur crée avec succès() l"utilisateur pour initialiser le mot de
passe du compte
Scenario alternatif
sd S'authentifier
:Utilisateur
EcranLogin CTRLCompte Compte
demanderAcces()
cadre d'authentification ()
loop
saisieLoginMotDePasse()
verification()
afficher()
alt
break
[OK] connexion réussie()
[NO]
erreur login et mot de passe()
sd Obtenir diagnostics
«IA» «CSVFile»
Model KNN DataSet
Medecin
VuePrediction CTRILPrediction
ref
S'authentifier
read_csv(path)
x_train()
y_train()
testData()
fit(x_train, y_train)
entrainnement
du model()
resultat entrainnement()
predict(testData)
classifcation()
calculPrecisionModel()
Résultat prédiction()
afficher()
Scenario nominal
1. Le patient remplit le formulaire de plaintes
2. Le système de prédiction charge les données de références (dataset)
3. Il le diviser en ‘ catégories : x_train (variables indépendantes à utilisées pour
entrainer le modèle IA, x_test : pourcentage de données non utilisées dans
l’entrainement du modèle (si test_size = 0.4 donc 60% sont des données
sont utilisées dans l’entraiment et 40% dans le test), y_train : variables
dépendantes ou à prédire, ic pour l’entrainement, y_test pour le test.
4. Le système entraine le modèle avec les données d’entrainement (x_train,
y_train)
5. Le système émet de prédiction correspondante
Scenario alternatif
Problème technique : Datset introuvable : dans ce cas le processus se
termine en échecs
Le système affiche le message « error » et le cas d’utilisation se termine
en échec.
Post-condition : le système a émis de prédictions.
ref
S'authentifier
fournirPlaintesPatients()
split_data()
read_csv(path)
x_train()
y_train()
testData()
fit(x_train, y_train)
entrainnement
du model()
resultat entrainnement()
predict(testData)
classifcation()
calculPrecisionModel()
Résultat prédiction()
afficher()
entrainer
modèle : fit()
- Un acteur Médecin qui sera devant l’écran pour ajouter de nouveau cas
(observations)
- Un objet d’interface graphique qui permettra la saisie des variables et
données
- Un contrôleur qui se chargera de la vérification du format de données
compatibles au jeu de données utilisé
- Une instance de la classe DataSet qui contiendra le jeu de données
sd Obtenir diagnostics
«CSVFile»
DataSet
Médecin
VueAlimentation CTRILAlimentation
ref
S'authentifier
saisirObservations()
alimenterDataSet()
dropna()
add(obs)
saveFile()
afficher()
«dialog»
VueAlimentation
- alcoolExcessif: int «CSV_FILE»
- antecedant: int CRTLAlimentation DataSetCancer
- balv: int
- id: int + charger(): void - alcoolExcesssif: int
- obseiste: int + creer(): void - balonnementVen: int
- sucre: int + enregistrer(): void - id: int
- tabac: int + nettoyer(): void - sucreDiabete: int
- virusHep: int - tabac: int
+ ajouter(): void
+ enregistrer(): void
+ nettoyer(): void
Admin
<<dialog>>
EcranGestionUtilisateur <<control>> <<entity>>
Utilisateur
-nom: String GestionUtilisateur
-prenom: String -id: int
-email: String +creerUtilisateur() -nom: String
-profil: String +modifierUtilisateur() -email: String
+envoiMail() -prenom: String
+creerUtilisateur() +supprimerUtilisateur() -profil: String
+modifierUtilisateur() +afficherUtilisateur() -motDePasse: String
+supprimerUtilisateur()
+visualiserUtilisateur()
«dialog»
VuePrediction
- alcoolExcessif: int
- antecedant: int «CSV_FILE»
- balv: int DataSetCancer
- id: int CRTLPrediction
- obseiste: int + charger(): void - alcoolExcesssif: int
- sucre: int + envoyerResultat(): void - balonnementVen: int
- tabac: int + nettoyer(): void - id: int
- test_size: int + split_date(): void - sucreDiabete: int
- virusHep: int - tabac: int
- x_test: int
- x_train: int
- y_test: int
- y_train: int «System»
+ afficherPredictions(): void ModelIA Prediction
+ calculPrecision(): void + fit(Object, Object): List - ajustement: float
+ predire(): void + predict(int, int): void - precision: float
- valuer: List
Plaintes
- alcoolExcessif: int
- antecedant: int
- balv: int «CSV_FILE»
- id: int DataSetCancer
- nomPatient: String - alcoolExcesssif: int
- obseiste: int CRTLPrediction - balonnementVen: int
- sucre: int - id: int
+ charger(): void
- tabac: int - sucreDiabete: int
+ envoyerResultat(): void
- test_size: int - tabac: int
+ nettoyer(): void
- virusHep: int
+ split_date(): void + afficherEntete(): void
- x_test: int
- x_train: int + creer(): void
- y_test: int + nettoyer(): void
- y_train: int
+ afficherPredictions(): void «System»
+ calculPrecision(): void ModelIA
+ predire(): void + fit(Object, Object): List
+ predict(int, int): void
1 Prediction
- ajustement: float
1..*
- precision: float
- valuer: List
sklearn
KNN + calculerAjustement(): void
+ model(): void
+ calculerDistance(): void + calculerPrécision(): void
+ confusion(): void
Serveur Flask : Flask est un micro-framework basé sur Python pour créer des pages
Web. Il peut être utilisé pour présenter des interfaces Web sur Pi et est relativement
facile à configurer.
http
PC Medecin
ServeurAPP
Chrome.exe
flaskServer/exe DataConcer.csv
http
ModelIA.py
PC Patient http
Chrome.exe
PC Admin
Edget.exe
Conclusion partielle
d’implémentation. Pour joindre l’utile à l’agréable, nous avons, nous construit une
architecture technique et un modèle de déploiement.
Discussion:
Nous avons testé notre modèle sur un jeu de données de 150 observations et 10
variables. Nous avons utilisé la bibliothèque pandas pour manipuler les données et
avons mis à l'échelle les caractéristiques catégorielles pour rendre les données plus
précises. Nous avons également généré un graphique des observations de données
numériques pour visualiser les relations entre le taux de sucre et le tabac, en utilisant
la variable "DiagCancer" comme label.
4.0.1 solution du système de prédiction de cancer de foie propose
Nous avons construit notre modèle KNN en important la classe
KNeighborsClassifier. Nous avons ensuite demandé à l'utilisateur de saisir les
valeurs de test pour le taux de sucre, le tabac et le nombre de voisins. Le modèle a
été entraîné avec les données du jeu de données et a prédit la classe du nouveau
cas de cancer du foie en fonction des valeurs de sucre et de tabac saisies par
l'utilisateur. Enfin, nous avons affiché le graphique avec la prédiction.
49
Le premier test a montré que le cas était positif, ce qui signifie que le modèle a prédit
correctement le cas. Dans le deuxième test, le système a prédit le cas comme positif
avec une précision de 89%. Cela indique que notre modèle atteint ses objectifs.
Conclusion
Pour notre conclusion je dirai que nous reconnaissons que nous n'avons pas
testé toutes les variables de notre jeu de données, ce qui limite la généralisation de
nos résultats. Malgré cela, le résultat précédent nous donne confiance dans la
capacité de notre modèle à prédire les cas de cancer du foie.
A ce niveau de notre chapitre nous allons parler sur notre algorithme KNN et
nous allons montre comment nous avons implémenté notre système de prédiction de
cancer de foie à partir de données qui présentant de grands risques.
Le projet vise à prédire ces maladies en utilisant un algorithme de Machine
Learning K Nearest Neighbors (KNN) ou K-plus proche voisin.
Afin de déterminer la classe d’un point cible, chaque chacun des k points les plus
proches de xq procèdent à un vote. La classe de xq correspond à la classe majoritaire.
En ce qui nous concerne, la classification par les K plus proches voisins sera faite
en se basant les variables explicatives d’apprentissage suivantes :
50
1. Taux d’alcool
2. Obésité
3. Antécédent
4. Virus hépatite
5. Ballonnement vente
6. Jaunissement
7. Aigrissement
8. Diagnostique
Avantages
Inconvénients
Le langage Python est placé sous une licence libre proche de la licence BSD5 et
fonctionne sur la plupart des plateformes informatiques, des smartphones aux
ordinateurs centraux6, de Windows à Unix avec notamment GNU/Linux en passant
par macOS, ou encore Android, iOS, et peut aussi être traduit en Java ou .NET. Il est
conçu pour optimiser la productivité des programmeurs en offrant des outils de haut
niveau et une syntaxe simple à utiliser.
À) importation de bibliothèque
B) Affichage de du jeu de données
Le test de notre modèle s’effectue sur un jeu de données de 150 observations
et 10 variables, récupéré en ligne pour de raisons de tests du modèles. Nous utilisons
panda pour manipuler le jeu de données.
#préparation du Graphique
plt.axis('equal')
plt.scatter(x[lab == 0], y[lab == 0], color='g', label='Négatif')
plt.scatter(x[lab == 1], y[lab == 1], color='r', label='Positif STAD I')
plt.scatter(x[lab == 2], y[lab == 2], color='b', label='Positif STAD II')
54
Conclusion partielle
Ce chapitre avait pour objectif des faire une discussion sur les résultats,
l’implémentation et la présentation des résultats. Chose faite, car nous avons fait le
choix technique, implémenté le modèle. Ensuite nous avons entrainé le modèle et fait
de prédication sur un graphique.
55
CONCLUSION GENERALE
Ce travail de fin de cycle a abordé la problématique de la conception d'un
système de prédiction du cancer du foie par l'apprentissage supervisé. L'objectif
principal était d'identifier les individus à risque élevé de développer un cancer du foie
en développant un système intelligent de prédiction.
BIBLIOGRAPHIE
[1] B. Ouail, Etude et comparaison de modèles de prédiction basés sur
l'apprentissage automatique, memoire de fin d'etude master, 2020 – 2021 .
[2] A. Garivier, apprentissage supervisé, 2013.
[3] P. Roques, UML 2 par la pratique –Etudesde cas et exercices corrigés, 4ème
Édition, Eyrolles, 2006.
[4] J.-Y. Didier, Introduction à UML, 18/12/2006. P70.
[5] d. g. j. gabay, UML 2, analyse et conception Mise en œuvre guidée avec etude
de cas, paris: dunod, , 2008,P55.
[6] UML2, paris, 2018.
[7] G. willet, paradigme, théorie,modèle, schéma,qu'est ce donc?, 2019.
[8] Rebecca, drdrdrdrdrdr, 33333.
[9] J. J. A. Smith, «Predicting Liver Cancer Using Supervised Learning,» Journal of
Medical Research, p. 137, 2020.
[10] L. M. Anderson, Machine Learning for Cancer, 2019, p. 120.
[11] R. L. S. M. johnson, «Supervised Learning Approach for Liver cancer
Prediction,» 2018.
57
ANNEXES
Annexe 1. Interface de jupyter
On a importé la bibliothèque
Mise à l’échelle des caractéristiques, pour rendre les données catégorielles précises
#préparation du Graphique
plt.axis('equal')
plt.scatter(x[lab == 0], y[lab == 0], color='g', label='Négatif')
plt.scatter(x[lab == 1], y[lab == 1], color='r', label='Positif STAD I')
plt.scatter(x[lab == 2], y[lab == 2], color='b', label='Positif STAD II')
plt.scatter(sucre, tabac, color='k') #notre nouvelle fleur
plt.legend()
#Construction de notre Modèle de prédiction
Cet algorithme fonctionne comme suit :
- Définition de la liste (vectorisation de données du sucre et du tabac)
60
- Définition d’un objet « model » qui initailise KNN avec nombre de voisons l’hyper
paramètre K déjà saisie par l’utilisateur
- Entrainement du model « fit(d, lab) en lui passant le vecteur de données su
sucre et du tabac
- Ensuite la prédiction avec de données sucre et tabac saisie par l’utilisateur.
- Invocation du graphique de s’afficher après paramétrage.
Nous avons démontré obtenu avec deux variable seulement à savoir « taux
Sucre = 1 gm» et « tabac = 0 » et K = 2. Il ressort de cette prédiction que le cas est
positif. Donc le sursème prédit correctement le cas.
PATIENT antécédent Alcool obésité Sucré Virus Tabac Ballonnement Perte Jaunisse Forte Fatigue Exposition Diagnostiques
excessif du de
diabètes Hépatite de vendre poids De yeux Douleur anormal Au toxique (1) Ou (0)
P1 1 0 0 1 0 1 0 1 1 1 1 0 1
P2 0 1 1 0 1 0 1 1 0 1 0 1 1
P3 0 1 0 0 0 0 1 1 0 0 1 1 0
P4 1 0 0 1 0 1 0 0 1 1 1 0 0
63