Université Batna 2
Faculté de Technologie
Département de Génie Industriel
TP:1: Intelligence Artificielle pour I’ingénierie
Initiation à Python
1
[Link]@[Link]
[Link]@[Link]
1. Introduction
La programmation est l’art de commander à un
ordinateur de faire ce qu’on souhaite.
Python compte parmi les langages de
programmation qui offre cette possibilité.
2
2. Caractéristiques du langage
Python est un langage de programmation :
Portable.
Libre.
Gratuit.
• Python permet une approche modulaire et
orientée objet de la programmation.
3
Installer Anaconda
Lancer Anaconda
4
Anaconda
Anaconda est une plateforme logicielle libre
comprenant l’environnement Python complet et de
très nombreuses librairies (numpy, Seaborn, …).
Cette plateforme est appliquée au
développement d'applications dédiées à
l'apprentissage automatique sous différent
systèmes d’exploitation telle que Unix,
Windows.
5
Installer Anaconda
[Link]
6
Lancer anaconda
1 7
Utilisation de Python
Pour utiliser Python, on fait appel à
Spyder : Environement de développement scientifique
Lancer Spyder
8
Lancer Spyder
(1) (2)
9
SPYDER :
Environement de développement scientifique
10
3. Mode d’Utilisation de Python
Python peut être utilisé en deux modes:
a. Mode interactif, i.e., dialoguer avec Python
directement en utilisant l’invite de commande.
(sans les sauvegarder au préalable dans un fichier).
b. Mode script: écrire un programme (code) et le
sauvegarder sur disque puis l’interpréter.
11
SPYDER :
Environement de développement scientifique
Editeur de fichier
Interpréteur interactif
12
a. Mode interactif
L'interpréteur interactif permet d'écrire et d'exécuter
du code, de faire des tests rapides.
13
Exemples de Calcul
14
4. Noms de variables
Les noms de variables doivent respecter quelques règles
simples :
Un nom de variable est une séquence de lettres
(a → z , A → Z) et de chiffres (0 → 9).
Un nom de variable doit commencer par une lettre.
Le caractère “_“ est autorisé.
Les lettres accentuées, les cédilles, les espaces, les
caractères spéciaux tels que $, #, @, etc. sont interdits.
La casse est significative (les caractères majuscules et
minuscules sont distingués).
15
5. Opérations de base
1. Affectation
2. Entrée des données
3. Sortie des résultats
16
5. Opérations de base
1. Affectation
Syntaxe :
Nom de variable = expression
Exemples:
17
clear
5. Effacer l’écran
clear
18
5. Opérations de base
2. Entrée des données
La fonction input()
L’utilisateur est invité à entrer des caractères au clavier
et à terminer avec <Enter>.
Le résultat de cette fonction est de type “chaine de
caractères”.
Syntaxe:
nom_variable = input()
nom_variable = input("Msg … : ")
19
5. Opérations de base
2. Entrée des données: chaine de caractères
Exemple1
Afficher le résultat
Taper le nom de la variable
20
5. Opérations de base
2. Entrée des données : entier/réel
Exemple2
Afficher le résultat
21
5. Opérations de base
2. Entrée des données : entier/réel
Exemple3
- Lire un 2eme entie.
Calculer la somme(nb, nb2)
Calculer la multiplication (nb,nb2)
22
5. Opérations de base
Afficher le résultat
Nécessite une conversion de type
Chaine entier/réel
23
5. Opérations de base
Les fonctions : int & float
24
b. Mode script
Pour garder le code écrit et l’exécuter à chaque fois, il
est nécessaire d’utiliser le concept de script.
1. Ecrire le code en utilisant un éditeur de texte
2. Exécuter le code.
3. Obtenir les résultats
L’extension d’un fichier de code Python est « .py »
25
b. Mode script
SPYDER : Environement de développement scientifique
Exécution totale
Exécution partielle Répertoire courant
Editeur de fichier
26
5. Opérations de base
3. Sortie des résultats (Affichage de message)
Syntaxe
print(“msg”)
print(“msg”)
print (“msg”, variable)
27
Exercices:
1. Assignez les valeurs respectives 30, 60, 90 à trois
variables x, y, z.
2. Effectuez l’opération (x * y )/z.
3. Lisez votre nom & prénom.
4. Affichez votre nom & Prénom
28
6. Les instructions de contrôle
a. Instructions conditionnelles
b. Instructions répétitives
29
6. Les instructions de contrôle
Indentation générale
Bloc 1
Ligne d’en-tête:
Bloc 2
Ligne d’en-tête:
Bloc 3
…
Bloc 2 (suite)
…
Bloc 1 (suite)
…
30
6. Les instructions de contrôle
a. Les instructions conditionnelles
Syntaxe
if condition:
Bloc d’instructions
Exemple :
if x > 0:
print (" Nombre Positif " )
31
6. Les instructions de contrôle
a. Les instructions conditionnelles
Syntaxe
if condition:
Block d’instructions1
else:
Block d’instructions2
Exemple :
if (a > 0):
print(" Nombre positif")
else:
print(" Nombre négatif ")
32
6. Les instructions de contrôle
a. Les instructions conditionnelles
Syntaxe
if condition:
Block d’instructions1
elif condition2:
Block d’instructions2
else:
Block d’instructions3
33
6. Les instructions de contrôle
a. Les instructions conditionnelles
Exemple : afficher le signe d’un entier (positif/négatif/null).
x=input(" Donnez la valeur de x: ")
if int(x) > 0:
print (" Le nombre est positif ")
elif int(x)<0:
print (" Le nombre est négatif ")
else:
print (" Nombre est nul ")
34
6. Les instructions de contrôle
a. Les instructions conditionnelles
Opérateurs de comparaison
Signification Symbole Symbole Python
Mathématique
Inférieur < <
Supérieur > >
Inférieur ou égal ≤ <=
Supérieur ou égal ≥ >=
Egal = ==
Différent ≠ !=
Reste de la division %
35
Exercice
Ecrire un script qui permet de saisir un nombre puis
déterminer s’il est pair ou impair.
36
Corrigé
nbre=input(" Entrez un entier : ")
if int(nbre)%2 == 0:
print (" Le nombre est pair ")
else:
print (" Le nombre est impair ")
37
Corrigé
b1= int(input(" Entrez la borne inférieure [b1: "))
b2= int(input(" Entrez la borne supérieure b2]: "))
valeur= int(input(" Entrez la valeur à vérifier: "))
if b1<=valeur<=b2:
print (valeur, " appartenant à l'intervalle donné ")
else:
print (valeur, " ,n'appartenant pas à l'intervalle
donné ")
38
6. Les instructions de contrôle
b. Les instructions répétitives
Le concept boucle permet de répéter
une certaine opération autant de fois que
nécessaire.
while
for
39
6. Les instructions de contrôle
b. Les instructions répétitives
L’instruction while
Syntaxe:
while condition:
Bloc d’instructions
40
6. Les instructions de contrôle
b. Les instructions répétitives
Exemple:
Afficher les 10 premiers entiers.
print(" Affichage des 10 premiers entiers ")
i = 1 # variable compteur utilisée par la boucle
while i <= 10:
print(i)
i += 1 # Incrémenter i de 1 (i=i+1)
print( " Fin traitement…")
Résultat
41
6. Les instructions de contrôle
b. Les instructions répétitives
Exemple:
Création de la table de multiplication d’un entier.
nb1= input("Donnez un entier : ")
nb2= int(nb1)
print(" Création de la table de multiplication de: " ,nb1)
i = 1 # variable compteur utilisée par la boucle
while i <= 10:
print(i, "*", nb2, "=", (i * nb2))
i += 1 # Incrémenter i de 1 (i=i+1)
print( " Fin traitement…")
42
6. Les instructions de contrôle
b. Les instructions répétitives
L’instruction for
Syntaxe:
for elt in sequence:
Bloc d’instructions
« elt » est une variable créé par « for ».
Elle n’est pas instancier par le programmeur. Elle prend
successivement chacune des valeurs figurant dans la séquence
parcourue.
43
6. Les instructions de contrôle
b. Les instructions répétitives
L’instruction for
Exemple
dpt = "Département Génie Industriel"
for lettre in dpt:
print(lettre)
print(" Fin traitement…")
44
6. Les instructions de contrôle
b. Les instructions répétitives
Résultat
45
6. Les instructions de contrôle
b. Les instructions répétitives
L’instruction range() : génère une liste de nombres.
Syntaxe :
range([debut], arrêt [, pas])
Exemple
# Un seul paramètre
for i in range(5):
print(i) Résultat = 0 1 2 3 4
# Deux paramètres
for i in range(3, 6):
print(i) Résultat = 3 4 5
# Trois paramètres
for i in range(4, 10, 2):
print(i) Résultat = 4 6 8 46
Exercice
Afficher les 10 premiers chiffres.
liste = 10
for chiffre in range(liste):
print(chiffre)
Print " Fin traitement…"
47
Corrigé
48
Exercice
Écrire un programme qui affiche les 10 premiers
multiples de 8
for i in range(10):
print(" "+str(i)+"*8 = "+str(i*8))
49
Corrigé
50
Exercice
Calculer la racine carré d’un entier avec la fonction sqrt().
Importer les librairies
51
7. Importation des librairies
Python offre de très nombreuses librairies de fonctions
pré-définies pour réaliser des tâches.
L’importation de la librairie se fait à travers l’instruction
import nom_librairie
Pour importer une fonction précise de la librairie
from nom_librairie import nom_fonction
52
Corrigé
Résultat
53
7. Importation des librairies
Quelques fonctions de la librairie math
Python mathématique
[Link] π
[Link](n) n!
[Link](x) |x|
[Link](x) ex
[Link](x) Ln(x)
math.log10(x) Log10(x)
[Link](x) √x
[Link](x) cos(x)
[Link](x) sin(x)
54
Exercice
1. Calculer le factoriel de x
2. Calculer l’exponentiel de x
55
Corrigé
import math
nb= int(input("Donnez un entier : "))
fact= [Link](nb)
print("Factoriel =",fact)
Résultat
56
7. Importantes des librairies
NumPy
permet d’effectuer des calculs numériques avec
Python. Elle introduit une gestion facilitée des tableaux
de nombres.
import numpy as np
Matplotlib
destinée à tracer et visualiser des données sous
formes de graphiques.
from matplotlib import pyplot
57
7. Importation des librairies
Scikit-learn
destinée à l'apprentissage automatique.
Elle comporte divers algorithmes tels que machine à
vecteurs de support, k-voisins, RNA, Kmeans,…
from sklearn import…
58
8. Définition des fonctions
Entrée Fonction Sortie
Une fonction transforme généralement une entrée en sortie
def nom_fonction(liste de paramètres):
…
bloc d'instructions de la fonction
…
59
8. Définition des fonctions
Fonction sans paramètres
60
8. Définition des fonctions
Fonction avec paramètres
61
Résultat
8. Définition des fonctions
Fonction avec retour de résultat
Une ≪ vraie ≫ fonction (au sens strict) doit renvoyer
un résultat à la fin de ses traitements.
La dernière ligne de la définition de la fonction
doit être l’instruction return (return : définit ce que doit
être la valeur renvoyée par la fonction).
Syntaxe :
return resultat
# « resultat » peut être une variable ou une expression
63
8. Définition des fonctions
Exemple
def nom_fonction(liste de paramètres):
…
bloc d'instructions
…
return
Syntaxe de l’appel de la fonction:
Variable_result = nom_fonction(liste_parametres)
64
8. Définition des fonctions
La fonction s’arrête à la ligne « return » qui indique
quelle sortie la fonction doit produire.
Une fois, la fonction créée, il est possible une infinité
de fois.
65
8. Définition des fonctions
Exemple
66
Dans un programme simple:
Inclure ces données dans le corps du programme
lui-même (par exemple dans une liste).
Ce procéder devient tout à fait inadéquat
lorsque l’on souhaite traiter une quantité
d’informations plus importante.
Solution
Manipulation des dataset
67
9. Manipulation du dataset (1)
Dataset (Jeu de données)
Ensemble de données (ou valeurs).
68
9. Manipulation du dataset (2)
Dataset
chaque valeur est associée à :
une variable
une observation.
Une variable décrit l'ensemble des valeurs décrivant la
même variable.
Une observation contient l'ensemble des valeurs décrivant
les variables de l'une unité traitée.
69
9. Manipulation du dataset (3)
Un dataset peut avoir une structure tabulaire, tel que:
le fichier au format CSV.
Un fichier CSV est un fichier texte. Chaque ligne du texte
correspond à une ligne du tableau et les virgules correspondent
aux séparations entre les colonnes.
Représentation tabulaire Fichier au format .csv
Sepal length, Sepal Width, Petal
length, Petal Width
5.1,3.5,1.4,0.2
4.9,3,1.4,0.2
4.7,3.2,1,3,0,2
.
.
.
.
70
9. Manipulation du dataset (3)
Comment gérer le dataset?
.
Librairie Pandas
.
71
9. Manipulation du dataset (4)
Librairie Pandas
Pandas est dérivé du terme (PANel DAta), un terme
économétrique désignant des ensembles de données
comprenant des observations sur plusieurs périodes
pour les mêmes individus.
Pandas est un package Python fournissant des
structures de données rapides, flexibles conçues
pour rendre le travail avec des données
relationnelles.
Ce package est un outil d'analyse et de
manipulation de données pratique dans le monde
réel en Python.
72
9. Manipulation du dataset (5)
Domaines d’utilisation
Finance, Statistique, Sciences sociales et dans de
nombreux domaines de l'Ingénierie.
Structures de données
Les deux principales structures de données des
pandas sont :
Nom de la structure dimension Description
[Link] 1 Vecteur de données
homogènes labellisées
[Link] 2 Tableau structuré de colonnes
homogènes
73
9. Manipulation du dataset (6)
Exemple:
74
9. Manipulation du dataset (7)
Utilisation du package
import pandas as pd
Importer les données en utilisant CSV
Pour importer les données d’un fichier .csv:
la fonction : read_csv() de la librairie pandas.
pd.read_csv ("[Link]")
75
9. Manipulation du dataset (8)
Exemples :
pd.read_csv("/GI/IA/mydata/ [Link]")
data = pd.read_csv('[Link]',delimiter=';' )
Contenu du fichier ‘[Link]’
76
9. Manipulation du dataset (9)
Division du DataFrame
Supprimer des lignes ou des colonnes en
spécifiant les noms d'index ou de colonnes.
Utilisation de .drop
Utilisation de .loc et .iloc
77
9. Manipulation du dataset (10)
Sélection des données par drop
[Link]( labels=None, axis=0)
labels : Index ou colonne à supprimer.
axis : Valeur par defaut =0
0 : ‘index’ : « ligne »
1 : ‘columns’
78
9. Manipulation du dataset (11)
Exemple1 :
X = [Link]('Total', axis=1)
print(X)
Avant .drop Après .drop
79
9. Manipulation du dataset (12)
Exemple2 :
X = [Link]('Modules',axis=1)
Exemple3 :
X = [Link](2,axis=0)
80
9. Manipulation du dataset (13)
Script en Python
import pandas as pd
data = pd.read_csv('[Link]',delimiter=';' )
print(data)
# data is divided into attributes and labels
X = [Link]('Total', axis=1)
print(X)
y = data['Total']
print(y)
81
9. Manipulation du dataset (14)
Sélection les données sur les DataFrames
.loc et .iloc, permettent d’effectuer des opérations de
sélection de données sur les DataFrames.
a) .loc est basé sur une étiquette
Permet de spécifier des lignes et des colonnes en
fonction de leurs étiquettes de lignes et de
colonnes.
b) .iloc est basé sur un index entier.
Permet de spécifier les lignes et les colonnes à l'aide
de leur index.
82
9. Manipulation du dataset (15)
Sélection les données sur les DataFrames
Lignes
[Link][0] # première ligne du data frame
[Link][1] # deuxième ligne du data frame
[Link][-1] # dernière ligne du data frame
Colonnes
[Link][:,0] # Première colonne du data frame
[Link][:,1] # Deuxième colonne du data frame
[Link][:,-1] # Dernière colonne du data frame
83
9. Manipulation du dataset (16)
Sélection les données sur les DataFrames
# Multiple lignes & colonnes
[Link][0:5] # les 5 premières lignes du dataframe
[Link][:, 0:2] # les deux premières colonnes avec
# toutes les lignes
[Link][[0,3,6,24], [0,5,6]] # 1ere, 4eme, 7eme, 25eme ligne
# + 1ere 6eme 7eme colonnes,
84
9. Manipulation du dataset (16)
Exemple
Afficher la première et dernière ligne avec toutes les colonnes
X= [Link][[0,2],:]
Afficher la première et dernière ligne avec la 1ere et 3eme
colonnes
X= [Link][[0,2],0:2]
85
9. Manipulation du dataset (18)
Exemple
Sélection des données par .iloc
import pandas as pd
data = pd.read_csv('[Link]',delimiter=';')
X= [Link][:,0:2]
y= [Link][:, -1]
print("Les données : \n")
print(X)
print("Dernière Colonne : \n")
print(y)
86
9. Manipulation du dataset (19)
Exemple
Sélection des données par .loc
import pandas as pd
data = pd.read_csv('[Link]',delimiter=';')
X1= [Link][:,['Modules','Coefficients']]
y1= [Link][:, 'Total']
print("Les données : \n")
print(X1)
print("Dernière Colonne : \n")
print(y1)
87
10. Division du dataset (1)
Division du dataset en un ensemble d'apprentissage et
un ensemble de test
Ensemble d'apprentissage : sous-ensemble destiné
à l'apprentissage d'un modèle.
Ensemble de test : sous-ensemble destiné à
l‘évaluation du modèle.
70% 30%
88
10. Division du dataset (2)
Scikit-learn est une bibliothèque libre Python destinée à
l'apprentissage automatique.
Types d'apprentissage gérés par sklearn:
supervisé, non supervisé, par renforcement, par transfert
Les algorithmes
• Les algorithmes : régression linéaire (Linear
Regression ),
• arbre de décision (decision Tree),
• SVM (machines à vecteur de support),
• classification naïve bayésienne (Naive Bayes),
• KNN (Plus proches voisins),
• Réseaux de neuronnes,
• ... 89
10. Division du dataset (2)
train_test_split
Diviser le dataset aléatoirement en deux sous ensembles : train
et test.
Exemple
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Où
X : ensemble des données
y : les classes
90
10. Division du dataset (2)
trai
plit
n_t
est
_s
xtest ytest
xtrain ytrain
91
10. Division du dataset (2)
Exemple
import pandas as pd
data = pd.read_csv('[Link]',delimiter=';')
print(data)
X= [Link][:,0:2]
y= classes = [Link][:, -1]
print("X =\n", X, "\n")
print("y =\n", y, "\n")
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
print("X_train =", X_train)
print("y_train =", y_train)
print("\n")
print("X_test =", X_test)
print("y_test =", y_test) 92
10. Fondamentaux
Apprentissage (training)
Modéliser la relation qui existe entre les entrées (instances) et
les sorties (classes) de sorte que la probabilité de mauvaise
prédiction soit minimale.
Création d’un modèle.
Processus consistant à déterminer les paramètres idéaux d'un
modèle.
93
10. Fondamentaux
Classification
La classification est la tâche consistant à :
attribuer une classe à une donnée qu’on veut classer.
Classe (class)
Un des ensembles de valeurs cibles énumérées pour une
étiquette.
Espace des classes est discret et fini
94
10. Fondamentaux
Types de classification
1. Classification binaire
2. Classification multinomiale
Classification binaire (binary classification)
Type de tâche de classification qui prédit l'une des
deux classes mutuellement exclusives.
Exemple, un modèle de ML qui classe les e-mails en tant
que "spam" ou "non-spam" est un classifieur binaire.
95
10. Fondamentaux
Classification à classes multiples : multinomiale (multi-class
classification)
Problèmes de classification qui distingue plus de deux classes.
Exemple
26 classes pour classer les caractères de l’alphabet.
Un modèle ML qui les classe serait donc à classes multiples.
Prédiction (prediction)
Résultat d'un modèle auquel un exemple est fourni en entrée.
96
Etapes de l’apprentissage automatique
1. Chargement les données
Importer des bibliothèques
Import nom de la librairie
2. Chargement le jeu de données
Data =read_csv()
3. Séparation des classes des données (X ,y)
X = les données
y = les classes
4. Visualisation des données
print(data) pour voir la structure des données (optionnelle)
[Link] du jeu de données
La fonction train_test_split permet de diviser le jeu de données en 2
ensembles : les données d’apprentissage et les données de test.
6. Création du classifieur
Il est possible d’utiliser plusieurs algorithmes d’apprentissage automatique.
clf = spécifier nom de l’algorithme utilisé.
7. Apprentissage sur les données d'apprentissage
[Link](données d’apprentissage, leurs classe)
8. Prédiction
result = [Link](nouvelles données)
[Link] du pourcentage d’erreur
Comparer le résultat réel avec le résultat prédit en utilisant les métriques de
sklearn.
• from [Link] import accuracy_score
accuracy_score(les classes réelles , les classes prédites)
10. Visualisation des résultats par des graphes
Résumé
1
3
création
Données Prédiction
d’apprentissage Modèle
Données de test
99
Chargement & traitement des données
Séparation des classes des données (X ,y)
Visualisation des données
Partitionnement le jeu de données
Création du classifieur
Apprentissage
Prédiction
Calcul du pourcentage d’erreur
Visualisation des résultats par des graphes