Projet IA
Projet IA
Projet IA
CAHIER DE SYNTHESE :
Projet Intelligence Artificielle avec Mé thode CRISP : Loan
Prediction Problem Dataset
MODULE :
Intelligence Artificelle
Elaborée par :
TRABELSI NOUHA
ZAYANI Farah
Année Universitaire :
2023/2024
I- Présentation du sujet :
1. Machine learning :
Le Machine Learning (ML) est une discipline de l'intelligence artificielle qui
permet aux ordinateurs d'apprendre à partir de données et d'améliorer leurs
performances sans être explicitement programmés. En utilisant des
algorithmes, le ML identifie des modèles dans les données, permettant aux
machines de prendre des décisions autonomes et de résoudre des problèmes.
Il existe différents types d'apprentissage, dont supervisé, non supervisé et par
renforcement, adaptés à diverses applications. Le ML joue un rôle crucial dans
des domaines tels que la prédiction, la classification et la reconnaissance de
motifs.
2. Kaggle :
La méthode CRISP-DM (Cross-Industry Standard Process for Data Mining) est un modèle de processus
standardisé qui guide les professionnels de la data science à travers les différentes étapes d'un projet de
data mining, depuis la compréhension du problème jusqu'à la mise en production des résultats
Dans notre projet, nous avons abordé une problématique soulevée par les banques : déterminer si une
personne présentant un profil x est éligible à l'obtention d'un crédit. L'objectif est d'évaluer la solvabilité
de la personne et sa capacité à rembourser le prêt accordé par la banque.
https://www.kaggle.com/datasets/altruistdelhite04/loan-prediction-problem-dataset
Au cours de cette phase, nous avons procédé au nettoyage de la base de données (data Cleaning) afin
d'assurer sa qualité et sa cohérence. Cela inclut la gestion des valeurs manquantes, la détection et la
correction d'éventuelles anomalies, ainsi que la normalisation des données.
Objectif : Pandas est une bibliothèque puissante de manipulation et d'analyse de données pour Python.
Fonctionnalité : Elle offre des structures de données telles que les DataFrames qui permettent de
manipuler et d'analyser facilement des données structurées.
Fonctionnalité : Elle prend en charge les tableaux et matrices de grande dimension, ainsi que des
fonctions mathématiques pour effectuer des opérations sur ces tableaux.
Fonctionnalité : Elle permet la création d'une grande variété de visualisations statiques, animées et
interactives en Python.
Objectif : Seaborn est une bibliothèque de visualisation de données statistiques basée sur Matplotlib.
Fonctionnalité : Elle offre une interface de haut niveau pour créer des graphiques statistiques attrayants et
informatifs.
Objectif : LabelEncoder est une classe utilitaire dans scikit-learn pour encoder les étiquettes catégorielles
avec des valeurs numériques.
Fonctionnalité : Elle transforme les étiquettes catégorielles en format numérique, ce qui est souvent
nécessaire pour les algorithmes d'apprentissage automatique.
Objectif : StratifiedShuffleSplit est un validateur croisé qui fournit des indices d'entraînement/test pour
diviser les données en ensembles d'entraînement/test tout en maintenant la distribution des classes de la
variable cible.
Fonctionnalité : Elle aide à garantir que chaque classe est représentée de manière proportionnelle dans les
ensembles d'entraînement et de test.
Fonctionnalité : Elle modélise la probabilité de la classe par défaut et prédit la classe avec la probabilité la
plus élevée.
Objectif : Les k-plus proches voisins sont un algorithme simple et efficace de classification.
Fonctionnalité : Il classe un nouveau point de données en fonction de la classe majoritaire de ses k voisins
les plus proches dans l'espace des caractéristiques.
Objectif : Le score d'exactitude est une métrique utilisée pour évaluer les performances d'un modèle de
classification.
Fonctionnalité : Il mesure l'exactitude du modèle en comparant les étiquettes prédites aux étiquettes
réelles.
.
Puis nous avons utilisé la fonction read_csv de Pandas pour lire les données à partir du fichier CSV
spécifié ('train_u6lujuX_CVtuZ9i.csv') et les charge dans un DataFrame (df)
Dans cette capture nous avons utilisé la méthode info () en Pandas pour afficher les informations concises
sur notre DataFrame, y compris le nombre total de lignes et de colonnes, le nombre de valeurs non nulles,
le type de données de chaque colonne, et la consommation totale de mémoire
La ligne de « code df.isnull().sum().sort_values(ascending=False) » permet de compter le nombre de
valeurs manquantes (nulles) dans chaque colonne du DataFrame, puis de les trier par ordre
décroissant du nombre de valeurs manquantes. Cela peut vous donner un aperçu rapide des
colonnes qui ont le plus de données manquantes. En effet :
df.isnull(): Cette expression renvoie un DataFrame de la même taille que df, mais avec
des valeurs booléennes (True si la valeur est nulle, False sinon).
.sum(): Calcule la somme des valeurs True le long des colonnes, car True est équivalent à 1
et False à 0.
.sort_values(ascending=False): Trie les résultats par ordre décroissant, de sorte que les colonnes
avec le plus grand nombre de valeurs manqu antes apparaissent en premier.
La méthode « describe » en Pandas est utilisée pour générer des statistiques descriptives d'un DataFrame.
Lorsque vous utilisez « include='O' », cela signifie que vous demandez uniquement des statistiques
descriptives pour les colonnes de type objet (c'est-à-dire, des colonnes contenant des données textuelles
ou catégorielles).
La sortie de cette ligne de code inclura des statistiques descriptives pour les colonnes de type objet, telles
que :
Ce code traite les valeurs manquantes dans les variables numériques en utilisant la méthode de
remplissage par la valeur précédente de la même colonne (backward fill) puis érifie s'il reste des valeurs
manquantes dans la DataFrame num_data après le remplissage.
Ce code effectue des transformations sur la colonne cible (Loan_Status) pour préparer les données à
l'analyse.
- target_value = {'Y': 1, 'N': 0} : Crée un dictionnaire qui mappe les valeurs 'Y' à 1 et 'N' à 0.
- target = cat_data['Loan_Status'] : Sélectionne la colonne 'Loan_Status' de la DataFrame
cat_data et la stocke dans la variable target.
- cat_data.drop('Loan_Status', axis=1, inplace=True) : Supprime la colonne 'Loan_Status' de
la DataFrame cat_data car elle sera traitée séparément.
- target = target.map(target_value) : Utilise la méthode map pour remplacer les valeurs 'Y' et 'N'
dans la colonne target par 1 et 0, respectivement.
Dans cette étape, nous avons entrepris une exploration approfondie de la base de données. Nous avons
utilisé des techniques de visualisation pour mieux comprendre la distribution des données, identifier des
tendances et repérer d'éventuelles corrélations entre les différentes variables.
Le code dans la figure suivante nous avons fourni réalise deux tâches liées à l'analyse exploratoire des
données (EDA) :
Le code que nous avons fourni utilise la fonction « scatter » de « Matplotlib » pour créer un nuage de
points (scatter plot) représentant la relation entre le revenu du conjoint de demandeur
(CoapplicantIncome) et le statut du prêt (Loan_Status).
Au cours de cette phase, nous avons développé un modèle basé sur des algorithmes de machine Learning
pour prédire la solvabilité des clients. Nous avons entraîné le modèle en utilisant les données disponibles,
ajusté ses paramètres pour optimiser ses performances, et évalué sa précision à l'aide de métriques
appropriées.
Ce code utilise la stratégie de « shuffle » et de split stratifié pour diviser les données en ensembles
d'entraînement et de test de manière équilibrée par rapport à la variable cible (Loan_Status). Cela garantit
que les proportions d'acceptation et de refus de prêt sont similaires dans les ensembles d'entraînement et
de test.
Ce code applique la régression logistique sur la base de données X_2 et la variable cible y.
Voici une explication brève du code :