0% ont trouvé ce document utile (0 vote)
4 vues31 pages

1 - Programmation Python IA - Partie 1 - NumPy

Le document présente un cours sur Python pour l'intelligence artificielle, couvrant des sujets tels que NumPy, Pandas, Matplotlib, Scikit-learn, TensorFlow et PyTorch. Il inclut des exemples pratiques de régression linéaire et de deep learning, ainsi qu'un parcours d'apprentissage structuré. Les outils et bibliothèques essentiels pour la manipulation de données et l'apprentissage automatique sont également abordés.

Transféré par

romilton paquete
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues31 pages

1 - Programmation Python IA - Partie 1 - NumPy

Le document présente un cours sur Python pour l'intelligence artificielle, couvrant des sujets tels que NumPy, Pandas, Matplotlib, Scikit-learn, TensorFlow et PyTorch. Il inclut des exemples pratiques de régression linéaire et de deep learning, ainsi qu'un parcours d'apprentissage structuré. Les outils et bibliothèques essentiels pour la manipulation de données et l'apprentissage automatique sont également abordés.

Transféré par

romilton paquete
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Python Pour l’IA

Pr. EL AZAMI
[Link]@[Link]
Plan du cours
Chapitre 1 : Introduction à Python pour l’IA
Chapitre 2 : NumPy – Calcul scientifique
Chapitre 3 : Pandas – Manipulation de données
Chapitre 4 : Matplotlib et Seaborn : Graphiques et Visualisation
Chapitre 5 : Scikit-learn – Apprentissage automatique
Chapitre 6 : TensorFlow & PyTorch pour l’IA

elazami © 2024-2025 2
Support de cours

Google Classroom:
Python pour IA
Utilisez votre émail institutionnel
Code d’accès:

oi6l4c7y
elazami © 2024-2025 3
Chapitre 1: Introduction Python pour IA

elazami © 2024-2025 4
Introduction à Python pour l’IA
Pourquoi Python pour l’IA ?
• Simplicité : syntaxe claire, proche du langage naturel.
• Richesse : bibliothèques spécialisées (NumPy, Pandas, Scikit-
learn, TensorFlow, PyTorch…).
• Communauté : vaste support, tutos, forums.
• Interopérabilité : fonctionne avec C, C++, Java, R, etc.

elazami © 2024-2025 5
Introduction à Python pour l’IA
Outils indispensables
Il faut maîtriser les bases :
• Gestion des données :
NumPy → calcul matriciel
Pandas → manipulation de tableaux et séries

• Visualisation :
Matplotlib, Seaborn → graphiques et visualisation
• IA & Machine Learning :
→ apprentissage automatique classique
Scikit-learn
TensorFlow, PyTorch → deep learning

elazami © 2024-2025 6
Introduction à Python pour l’IA
Exemple simple : Régression linéaire avec Scikit-learn
import numpy as np
import [Link] as plt
from sklearn.linear_model import LinearRegression

# Données simulées
X = [Link]([[1], [2], [3], [4], [5]])
y = [Link]([1.2, 1.9, 3.2, 3.9, 5.1])
# Création et entraînement du modèle
model = LinearRegression()
[Link](X, y)
# Prédictions
y_pred = [Link](X)
# Visualisation
[Link](X, y, color="blue", label="Données réelles")
[Link](X, y_pred, color="red", label="Droite de régression")
[Link]()
[Link]()
elazami © 2024-2025 7
Introduction à Python pour l’IA
Exemple Deep Learning (PyTorch)
import torch
import [Link] as nn
import [Link] as optim
# Données simulées
X = [Link]([[1.0], [2.0], [3.0], [4.0]])
y = [Link]([[2.0], [4.0], [6.0], [8.0]])
# Modèle simple : une couche linéaire
model = [Link](1, 1)
# Fonction de coût et optimiseur
criterion = [Link]()
optimizer = [Link]([Link](), lr=0.01)
# Entraînement
for epoch in range(500):
y_pred = model(X)
loss = criterion(y_pred, y)
optimizer.zero_grad()
[Link]()
[Link]()
print("Paramètres appris :", list([Link]()))
elazami © 2024-2025 8
Introduction à Python pour l’IA
Parcours d’apprentissage
[Link] de Python (variables, boucles, fonctions, classes).
[Link] et Pandas pour la manipulation des données.
[Link] et Seaborn pour les graphiques et visualisation
[Link]-learn pour l’apprentissage automatique.
[Link] ou TensorFlow pour le deep learning.
[Link]-projets IA :
•Classification d’images
•Analyse de texte
•Prédiction de séries temporelles

elazami © 2024-2025 9
Chapitre 2: NumPy
• NumPy : manipulation de tableaux, calcul matriciel, opérations vectorisées.

elazami © 2024-2025 10
NumPy
NumPy : Le cœur du calcul scientifique en Python
Qu’est-ce que NumPy ?
• NumPy est la base du calcul scientifique en Python.
• Toutes les bibliothèques d’IA modernes (comme TensorFlow, PyTorch, scikit-learn,
pandas) reposent sur NumPy pour :
• Représenter les données sous forme de matrices (ndarrays: N Dimension Array)
• Effectuer des opérations mathématiques vectorisées très rapides
• Gérer les transformations de données avant l’apprentissage d’un modèle

elazami © 2024-2025 11
NumPy
Exemple de bases sur les tableaux
import numpy as np
# Création d'un tableau
a = [Link]([1, 2, 3, 4, 5])
print("Tableau a :", a)
print([Link]) # (5,)
print ([Link]) # 5

# Tableau 2D
b = [Link]([[1, 2], [3, 4], [5, 6]]) # array([[1, 2], [3, 4], [5, 6]])
print("Tableau b :\n", b)
print([Link]) # (3,2)
print([Link]) # 6

Les différences majeures entre les listes proposées par Python et les tableaux de Numpy
sont:
— dans un tableau, tous les éléments doivent être du même type ;
— les tableaux ont une longueur fixe, on ne peut directement ajouter une nouvelle valeur ;
— il y a un gain élevé de performance avec les tableaux.
elazami © 2024-2025 12
NumPy
Fonctions utiles
# Zéros, uns, aléatoires
z = [Link]((2, 3)) # tableau 2x3 rempli de 0
u = [Link]((2, 3)) # tableau rempli de 1
r = [Link](2, 3) # tableau aléatoire, la fonction
[Link](n) qui va
renvoyer un tableau avec n
valeurs comprises entre 0 et 1
# Opérations
a = [Link]([1, 2, 3])
b = [Link]([4, 5, 6])
print(a + b) # addition élément par élément
[5 7 9]
print(a * b) # multiplication élément par élément
[ 4 10 18]
print([Link](b)) # produit scalaire 32

elazami © 2024-2025 13
NumPy
Indexation et slicing
x = [Link]([10, 20, 30, 40, 50])
print(x[0]) # premier élément
print(x[-1]) # dernier élément
print(x[1:4]) # sous-tableau (indices 1 à 3)

Application pratique en IA
Supposons que tu as un vecteur de poids et un vecteur d’entrée d’un neurone :

w = [Link]([0.5, -0.2, 0.8]) # poids


x = [Link]([1.0, 0.4, 0.6]) # entrées
# Calcul sortie = somme pondérée
y = [Link](w, x)
print("Sortie du neurone :", y)

elazami © 2024-2025 14
NumPy
Générer des tableaux
Pour générer un tableau avec des données comprises dans un intervalle, on utilise
principalement deux fonctions:
 arange (debut, fin, pas)
 et linspace(debut, fin, quantité, dtype=np.float64) .
• La première est analogue à la fonction range.
• La seconde prend trois paramètres:
o le début de l’intervalle (inclus),
o la fin de l’intervalle (non inclus)
o et le nombre de valeurs que l’on veut entre ces deux valeurs.

elazami © 2024-2025 15
NumPy
Générer des tableaux
Par exemple:

[Link](0, 10, 5) # 5 nombres compris entre 0 et 10


Résultat: array([ 0. , 2.5, 5. , 7.5, 10. ])
[Link](1, 5, 0.5) # Nombres de 1 et à 5 (exclu) avec un pas de 0.5
Résultat: array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])

• Il y à aussi la fonction [Link](shape, valeur)


→ crée un tableau de la forme donnée rempli de la valeur spécifiée.
import numpy as np [[7 7 7 7]
[7 7 7 7]
A = [Link]((3, 4), 7) [7 7 7 7]]
print(A)
elazami © 2024-2025 16
NumPy
Générer des tableaux
• On trouve la fonction [Link](max, size=n) qui va retourner un tableau avec
n valeurs comprises entre 0 et max (exclu).

[Link](10, size=5)
Résultat: array([2, 8, 3, 7, 8])

• Cette bibliothèque permet aussi de générer des tableaux de nombres suivant une loi
de probabilité:

[Link](loc=10, scale=0.5, size=10) # Tableau de 10 éléments centré sur 10


Résultat: array([ 9.88225653, 10.4609955 , 9.51217795, 10.50906955, 10.52551522,
9.1359539 , 9.60488407, 10.53728603, 9.55069133, 10.4908086 ])

[Link](n=10, p=0.5, size=10)


Résultat: array([2, 7, 5, 5, 6, 6, 4, 7, 7, 3])
elazami © 2024-2025 17
NumPy
Rechercher dans un tableau
• La fonction [Link] prend en paramètre une condition sur les valeurs d’un tableau
et va retourner l’index des éléments qui vérifient la condition.
• La fonction [Link] renvoie les éléments qui vérifient la condition. Ce qui donne:

>>> tableau = [Link](1, 25) # Tableau avec les nombres entiers de 1 à 24


>>>
>>> [Link](tableau % 5 == 0) # L'index des nombres divisibles par 5
(array([4, 9, 14, 19])
>>>
>>> [Link](tableau % 5 == 0, tableau) # Les nombres divisibles par 5
array([5, 10, 15, 20])

• Pour la fonction extract, il faut préciser le nom du tableau en argument


elazami © 2024-2025 18
NumPy
Fonctions biens utiles
• Numpy propose aussi d’autres fonctions, voici une liste non exhaustive:
>>> tableau = [Link]([5, 1, 6, 9])
>>> [Link](tableau) # Trie le tableau
array([1, 5, 6, 9])
>>>
>>> [Link](tableau) # La moyenne
5.25
>>> [Link](tableau) # l’ecart-type
2.8613807855648994
>>> [Link](tableau) # La médiane C'est la valeur centrale d'une série de données
# une fois qu'elles sont classées par ordre croissant ou décroissant.

5.5
>>> np.count_nonzero(tableau) # Le nombre de valeurs différentes de 0
4 elazami © 2024-2025 19
NumPy
Les tableaux de deux dimensions
Numpy permet de créer des tableaux de plusieurs dimensions:
>>> tableau = [Link]([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> tableau
array([[1, 2, 3],
4, 5, 6],
[7, 8, 9]])

Pour parcourir ce tableau, on utilise alors deux boucles for imbriquées.

>>> tableau = [Link]([[1, 2, 3], [4, 5, 6]])


>>> for i in tableau:
... for j in i:
... print(j)

elazami © 2024-2025 20
NumPy
Les tableaux de deux dimensions
Dans le cas où on souhaiterait générer un tableau d’entiers compris entre 0 et n, il
faudra:
• utiliser la fonction [Link] avec le paramètre size,
• size: une liste contenant le nombre de lignes et de colonnes du tableau:

>>> [Link](5, size=[3, 2]) # Nombres compris entre 0 (inclus) et 5 (exclus)


array([[1, 0],
[2, 3],
[0, 4]])

elazami © 2024-2025 21
NumPy
Fonctions spécifiques aux tableaux de plusieurs dimensions
la fonction transpose permet d’échanger les lignes et les colonnes:
>>> tableau = [Link]([[1, 2, 3], [4, 5, 6]])
>>> tableau
array([[1, 2, 3],
[4, 5, 6]])
>>>
>>> [Link](tableau)
array([[1, 4],
[2, 5],
[3, 6]])

elazami © 2024-2025 22
NumPy
• NumPy propose la fonction reshape() qui permet de changer les dimensions d’un
tableau, sans changer les valeurs, si la taille est compatible:
>>> tableau = [Link]([1, 2, 3, 4, 5, 6])
>>> [Link](3, 2) # 3 lignes et 2 colonnes
array([[1, 2],
[3, 4],
[5, 6]])
>>> [Link](2, 3) # 2 lignes et 3 colonnes
array([[1, 2, 3],
[4, 5, 6]])
>>> [Link](3, 3) # Impossible, il faudrait que le tableau
ait une longueur de 9
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
[Link](3, 3)
ValueError: cannot reshape array of size 6 into shape (3,3)
elazami © 2024-2025 23
NumPy
• La méthode ravel() en NumPy permet de transformer un tableau multidimensionnel
(par exemple 2D ou 3D) en un tableau 1D (à une seule dimension) — c’est-à-dire de le
“aplatir”.

>>> tableau = [Link]([[1, 2, 3], [4, 5, 6]])


>>> tableau
array([[1, 2, 3],
[4, 5, 6]])
>>>
>>> [Link](tableau)
>>> array([1, 2, 3, 4, 5, 6])

elazami © 2024-2025 24
NumPy
• La méthode flatten() en NumPy permet de transformer un tableau multidimensionnel
(par exemple 2D ou 3D) en un tableau 1D (à une seule dimension) — c’est-à-dire de le
“aplatir”.
• Si tu veux simplement lire ou traiter les valeurs → ravel() est plus efficace.
• Si tu veux modifier le résultat sans affecter le tableau d’origine → utilise flatten().

A = [Link]([[1, 2], [3, 4]]) A B


B = [Link]() [[99 2] [1 2 3 4]
B[0] = 99 [ 3 4]]
print(A) Ici, A est modifié, car ravel() renvoie une vue (même mémoire).
print(B)
A B
A = [Link]([[1, 2], [3, 4]]) [[1 2] [1 2 3 4]
B = [Link]() [ 3 4]]
B[0] = 99 A ne change pas, car flatten() renvoie une copie.
print(A)
print(B)
elazami © 2024-2025 25
NumPy
Créer un tableau à partir d’un fichier
• La fonction [Link]() permet de charger des données enregistrées sur disque dans
un fichier créé avec [Link]() ou [Link]() (formats .npy ou .npz).
• C’est une fonction essentielle pour restaurer des tableaux NumPy sauvegardés
précédemment.

• Syntaxe de base:

[Link](file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII')

elazami © 2024-2025 26
NumPy
Paramètres principaux de [Link]():
Paramètre Type Description
file str ou file-like Nom du fichier à charger (.npy ou .npz).
Permet de charger le fichier en mémoire partagée (utile
mmap_mode str ou None
pour les gros fichiers). Exemples : 'r', 'r+', 'w+', 'c'.

Si True, autorise le chargement d’objets Python enregistrés


allow_pickle bool
avec pickle. Par défaut False pour des raisons de sécurité.

fix_imports bool Utilisé pour compatibilité entre versions Python 2 et 3.

encoding str Encodage utilisé pour les chaînes dans les fichiers Python 2.

elazami © 2024-2025 27
NumPy
Cas d’utilisation 1 : Charger un tableau .npy Cas d’utilisation 2 : Charger plusieurs tableaux .npz
Exemple : Un fichier .npz est une archive compressée
contenant plusieurs tableaux.
import numpy as np
import numpy as np
# Sauvegarde d’un tableau
x = [Link]([[1, 2, 3], [4, 5, 6]]) # Sauvegarde de plusieurs tableaux
[Link]('[Link]', x) a = [Link](5)
b = [Link](0, 1, 5)
# Chargement du tableau [Link]('multi_data.npz', array1=a, array2=b)
[[1 2 3]
data = [Link]('[Link]')
print(data) [4 5 6]] # Chargement
data = [Link]('multi_data.npz')

print(data['array1']) [0 1 2 3 4]
print(data['array2']) [0. 0.25 0.5 0.75 1. ]

elazami © 2024-2025 28
NumPy
Cas d’utilisation 3 : Chargement avec mémoire mappée (grands fichiers)
Si un tableau est trop grand pour la RAM, on peut ne pas tout charger en mémoire :

arr = [Link]('big_data.npy', mmap_mode='r')


print([Link])

• Cela crée une vue sur le fichier sans le charger entièrement, permettant d’accéder
partiellement aux données (utile pour le traitement de gros volumes).

Remarques de sécurité
• allow_pickle=False par défaut → empêche l’exécution de code malveillant lors du
chargement.
• Si tu as enregistré des objets Python non-NumPy (listes, dictionnaires, etc.), il faut :

[Link]('[Link]', allow_pickle=True)

elazami © 2024-2025 29
NumPy: Exercice
On veut manipuler des données numériques simulées à l’aide de NumPy.
Réalisez les étapes suivantes :
1. Importation et création de tableaux 4. Statistiques et agrégations
– Importez la bibliothèque numpy sous le nom np. Calculez :
La moyenne, le minimum et le
– Créez un tableau A contenant les entiers de 0 à 11 maximum de A.
inclus. La somme par ligne et par colonne.
– Transformez-le en matrice de 3 lignes et 4 colonnes. 5. Génération de nombres aléatoires
2. Indexation et slicing Créez un tableau C de taille (3,4) contenant
– Affichez la 2ᵉ ligne de A. des nombres aléatoires suivant une loi
– Affichez la 3ᵉ colonne de A. normale de moyenne 10 et écart-type 2.
Calculez la moyenne et l’écart-type de C.
– Affichez l’élément situé à la 2ᵉ ligne et 4ᵉ colonne. 6. Reshape et ravel
3. Opérations élémentaires Transformez A en une matrice de
– Créez un tableau B de même taille rempli de 2. dimension (4,3).
– Calculez : Aplatissez-la ensuite en un tableau 1D.
• A+B 7. Filtrage
Affichez tous les éléments de A supérieurs
• A*B à 5.
• A ** 2 (élévation au carré)

elazami © 2024-2025 30
NumPy: Solution # 4 Statistiques
print("Moyenne de A :", [Link]())
import numpy as np print("Minimum :", [Link]())
print("Maximum :", [Link]())
# 1 Création du tableau print("Somme par ligne :", [Link](axis=1))
A = [Link](12) # de 0 à 11 print("Somme par colonne :", [Link](axis=0))
A = [Link](3, 4) # 3 lignes, 4 colonnes
print("A =\n", A) # 5 Nombres aléatoires
C = [Link](loc=10, scale=2, size=(3, 4))
# 2 Indexation et slicing print("\nC =\n", C)
print("Deuxième ligne :", A[1]) # ligne d'indice 1 print("Moyenne de C :", [Link]())
print("Troisième colonne :", A[:, 2]) # colonne d'indice 2 print("Écart-type de C :", [Link]())
print("Élément (2,4) :", A[1, 3]) # ligne 2, colonne 4
# 6 Reshape et ravel
# 3 Opérations élémentaires A_reshaped = [Link](4, 3)
B = [Link]((3, 4), 2) # matrice remplie de 2 print("\nA reshape(4,3) =\n", A_reshaped)
print("A + B =\n", A + B)
print("A * B =\n", A * B) A_flat = A_reshaped.ravel()
print("A ** 2 =\n", A ** 2) print("A aplati (ravel) =", A_flat)

# 7 Filtrage
print("Éléments > 5 :", A[A > 5])
elazami © 2024-2025 31

Vous aimerez peut-être aussi