Initiation au
Machine Learning:
Initiation Python &
Titanic training
COULIBALY ISSA, PhD candidate, engineer
and CCEO at City-Skill
1. C’est quoi Python ?
Python est un langage de programmation interprété,
multi-paradigme et multiplateformes.
Il est particulièrement répandu dans le monde scientifique,
et possède de nombreuses bibliothèques optimisées
destinées au calcul numérique.
Les importations nécessaires
#les imports
import numpy as np # calculs numérique
import pandas as pd # manipulation et analyse de données
import seaborn as sns #librairie de visaulisation des données
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from [Link] import accuracy_score
import [Link] as plt #affichage des graphes
Qu’est-ce qu’on a besoin pour faire du Machine
Learning(prédire un événement en informatique
?)
Initiation à Python
1. Comment obtenir les données?
● Les données sont généralement publiées par les grands laboratoires de recherches
● Il y a deux types de données : données libre(c’est-à-dire gratuites) et données privées
● Comment lire les données
Pratique:
a. Télécharger les données sur kaggle:
[Link]
b. Charger les données dans python:
import pandas as pd
titanic_data = pd.read_csv('[Link]')
Initiation à Python
Comment analyser les données ?
Voir le contenu des données et les valeurs statistiques de chaque elements
Pratique:
1. Les n premières lignes de la donnée:
titanic_data.head(n)
2. Voir les parties non renseignées de la donnée: titanic_data.isnull().sum()
3. Supprimer la colonne Cabine des données vu qu’il n’est pas important dans notre étude: titanic_data =
titanic_data.drop(columns='Cabin', axis=1)
4. Remplacer les valeurs manquantes de la colone Age par la moyenne des âges:
titanic_data['Age'].fillna(titanic_data['Age'].mean(), inplace=True)
5. Remplacez les valeurs manquantes dans la colonne « Embarqué » par la valeur du mode:
titanic_data['Embarked'].fillna(titanic_data['Embarked'].mode()[0], inplace=True)
Initiation à Python
Comment analyser les données ?
6. Convertir les chaînes de caractères en valeurs catégorielles:(Nous avons déjà remarqué dans le tableau qu'il
y a deux colonnes qui contiennent des valeurs de type chaîne : la colonne "'Sex'" et la colonne "'Embarked'".)
titanic_data.replace({'Sex':{'male':0,'female':1},'Embarked':{'S':0,'C':1,'Q':2}}, inplace=True)
7. Maintenant, si nous exécutons à nouveau la commande titanic_data.head(), nous constatons que les valeurs
ont été remplacées avec succès.
8. On voit aussi qu'il y a quelques colonnes, qui n'ont pas beaucoup d'importance dans ce processus.
Débarrassons-nous d'eux.
titanic_data= titanic_data.drop(columns = ['PassengerId','Name','Ticket'],axis=1)
Ces étapes dépendent de l’analyse de chaque ingénieur.
Initiation à Python
Comment préparer nos données d’entraînement (X_train, Y_train) ?
Ici, X est la variable de fonctionnalité, contenant toutes les fonctionnalités telles que Pclass, Age, Sex,
Embarked, etc. à l'exception de la colonne Survived.
Y, d'autre part, est la variable cible, car c'est le résultat que nous voulons déterminer, c'est-à-dire si
une personne est en vie.
Maintenant, nous allons diviser les données en quatre variables, à savoir X_train, Y_train, X_test,
Y_test.
X_train, X_test, Y_train, Y_test = train_test_split(X,Y, test_size=0.2, random_state=2)
Initiation à Python
Comprenons les variables :
X_train : contient un ensemble de valeurs de la variable 'X'
Y_train : contient la sortie (si la personne est vivante ou morte) de la valeur correspondante de
X_train.
X_test : contient un ensemble de valeurs de la variable 'X', à l'exclusion de celles de X_train.
Y_train : contient la sortie (que la personne soit vivante ou morte) de la valeur correspondante de
X_test.
test_size : représente le rapport en pourcentage de X_train:X_test (ici 0,2 signifie que les données
seront séparées dans les variables X_train et X_test dans un rapport 80:20). Vous pouvez utiliser
n'importe quelle valeur que vous voulez. Une valeur <0,3 est préférée
Initiation à Python
Modèles d’entraînements:
Logistic Regression :
1. Création du modèle: model = LogisticRegression(solver='liblinear')
2. Entraînement du modèle: model.fit(X_train, Y_train)
3. Verifier la performance: Y_train_prediction = [Link](X_train)
4. Maintenant pour verifier la précision de sa prédiction, nous comparons les valeurs de Y_train_prediction et
Y_train qui étaient les données d’origine.
training_data_accuracy = accuracy_score(Y_train, Y_train_prediction)
print('Accuracy score of training data : ', training_data_accuracy)
5. Maintenant, essayons à nouveau avec X_test et Y_test :
Y_test_prediction = [Link](X_test)
test_data_accuracy = accuracy_score(Y_test, Y_test_prediction)
print('Accuracy score of test data : ', test_data_accuracy)
La sortie est de 0,7821229050279329, ce qui est très proche de notre prédiction de données de test.
Faisons un test sur une personne au hasard
Vérifions maintenant une personne aléatoire en utilisant des données aléatoires.
1. input_data = (3,0,35,0,0,8.05,0)
# Notez que ces données excluent les données Survived, car elles doivent être déterminées à partir du
modèle lui-même(c’est le résultat)
2. Changeons cette valeur en tableau utilisable par le système:
input_data_as_numpy_array = [Link](input_data)
3. Comme notre modèle a été formé dans différentes dimensions, nous devons le remodeler en
fonction de nos dimensions cibles.
input_data_reshaped = input_data_as_numpy_array.reshape(1,-1)
Faisons un test sur une personne au hasard
Vérifions maintenant une personne aléatoire en utilisant des données aléatoires.
prediction = [Link](input_data_reshaped)
if prediction[0]==0:
print("Dead")
if prediction[0]==1:
print("Alive")
Lors de l'exécution du code, nous obtenons exactement le même résultat, que celui donné, dans le
tableau.
Nous pouvons donc conclure que notre modèle fonctionne bien. Vous pouvez entraîner le modèle à
l'aide d'un ensemble de données plus volumineux pour obtenir de meilleurs résultats.
Le résultat de tout modèle d'apprentissage automatique peut être rendu plus précis à l'aide d'un
ensemble de données plus volumineux, mais ce sera beaucoup plus fastidieux et chronophage.
N'hésitez pas à ajouter tout type de modifications nécessaires à ce code et à le personnaliser
selon vos besoins. Une logique similaire peut être appliquée pour effectuer divers types de
prédictions.