Certificat Big Data Apprentissage TP1 Introduction à Python

Dimension: px
Commencer à balayer dès la page:

Download "Certificat Big Data Apprentissage TP1 Introduction à Python"

Transcription

1 Certificat Big Data Apprentissage TP1 Introduction à Python Olivier Schwander 30 septembre / 31

2 Outline Environnement de travail Commentaires Installation Éditeur Expressions Structures de contrôle Définition de fonction Création de matrices Opérations Chargement et sauvegarde Algèbre linéaire Variables aléatoires 2 / 31

3 Commentaires Installation Éditeur Remarques importantes Ce n est pas un cours de Python! Connaissances tranposables dans d autres langages Matlab, R voire même C ou C++ Ce n est pas un cours de programmation ou d algorithmique On supposera (volontairement ou non) quelques connaissances de bases, mais ne surtout pas hésiter à poser des questions! 3 / 31

4 Commentaires Installation Éditeur Pourquoi Python Un langage généraliste Gros projet ou petit projet ou non Interface graphique ou non Client ou serveur Prototype ou projet final Pour le traitement de données : numpy, scipy Apprentissage : sklearn : matplotlib Très grande communauté Académique ou entreprise Beaucoup de code existant Beaucoup de gens à qui poser des questions Beaucoup de gens intéressés 4 / 31

5 Commentaires Installation Éditeur Si vous avez des habitudes Gardez-les! Système d exploitation : Windows, Linux, Mac Installation de Python Éditeur de texte 5 / 31

6 Commentaires Installation Éditeur Distribution Python Python Anaconda À télécharger sur Clé usb pour essayer maintenant Python 3 Tout le nécessaire devrait être inclu Installation Voir Windows : click-click Mac/Linux : bash Anaconda XXX.sh 6 / 31

7 Commentaires Installation Éditeur Éditeur de texte : Spyder 7 / 31

8 Commentaires Installation Éditeur Descriptions Interface en style Matlab 3 sous-fenêtres Code source à gauche Interpréteur Python en bas à droite Autres informations en haut à droite Des boutons partout Un raccourci utile Ctrl+i pour obtenir de l aide sur le code autour du curseur 8 / 31

9 Expressions Structures de contrôle Définition de fonction Expressions arithmétiques À tester dans l interpréteur : >>> ( ) * >>> 2**8 256 >>> 3/2 1.5 >>> 3//2 1 >>> 3.0/ Attention au type des valeurs : int, float 9 / 31

10 Expressions Structures de contrôle Définition de fonction Variables À tester dans l interpréteur : >>> a = 3; a 3 >>> b = "blablabla"; b blablabla >>> a = a + 1; a 4 >>> a += 1; a 5 >>> a = "hop"; a hop 10 / 31

11 Expressions Structures de contrôle Définition de fonction Bibliothèques À tester dans l interpréteur : >>> import math >>> math.sqrt(3) >>> math.sqrt(4) 2.0 >>> int(2.0) 2 >>> float(2) / 31

12 Expressions Structures de contrôle Définition de fonction Affichage À tester dans l interpréteur : >>> print(3) 3 >>> print("bof") bof >>> a = 1111 >>> print(a) 1111 La fonction print tente de faire un affichage raisonnable sur n importe quel type d objet. 12 / 31

13 Expressions Structures de contrôle Définition de fonction Listes À tester dans l interpréteur : >>> l = [] >>> l.append(3) >>> l.append("toto") >>> print(l) [3, toto ] >>> l [3, toto ] >>> m = [1, 2, 3, 4] >>> l + m [3, toto, 1, 2, 3, 4] 13 / 31

14 Expressions Structures de contrôle Définition de fonction Tests : structure if Version plus générale Version simple if condition:... if condition:... elif autre_condition:... else:... Condition Une expression booléenne x<12 and y<z or a+b<espilon 14 / 31

15 Expressions Structures de contrôle Définition de fonction Boucles Structure while while condition:... Structure for for i in range(n):... Remarques La boucle for est très générique en Python Notion de générateur range(n) : les entiers entre 0 et n 1 inclus range(n1, n2) : les entiers entre n1 et n2 inclus [a, b, c, d] : les éléments de la liste 15 / 31

16 Expressions Structures de contrôle Définition de fonction Définition d une fonction def nom(arg1, arg2, arg3): """ Documentation optionnelle """... return resultat Des arguments nommés avec des valeurs par défaut sont possibles Des fonctions avec un nombre variable d argument aussi 16 / 31

17 Expressions Structures de contrôle Définition de fonction Exemple de fonction Version basique import math def aire_disque(r): pi = math.pi r2 = r**2 return pi * r2 Mieux def aire_disque(r): """ Calcule l aire d un disque de rayon r """ pi = math.pi r2 = r**2 return pi * r2 Conseil Toujours découper le code en fonctions élémentaires Plus facile à lire, à réutiliser, à débugger 17 / 31

18 Création de matrices Opérations Chargement et sauvegarde Matrices (et tenseurs, en fait) Bibliothèque de base numpy Contient les structures de données et les opérations de base Prérequis dans le code : import numpy as np Création >>> m = np.array([[1, 2], [3, 4]]); m array([[1, 2], [3, 4]]) 18 / 31

19 Création de matrices Opérations Chargement et sauvegarde Matrices et vecteurs particuliers Matrices Matrice diagonale : np.diag(liste_des_valeurs) Matrice identité : np.eye(dim1, dim2) Matrice avec des 1 partout : np.ones((dim1, dim2)) Vecteurs Valeurs entre x1 et x2 (exclu) par pas de step : np.arange(x1, x2, step) n valeurs entre x1 et x2 (inclus) : np.linspace(x1, x2, n) Aléatoire Uniforme entre 0 et 1 : np.random.rand(dim1, dim2) Gaussienne centrée réduite : np.random.randn(dim1, dim2) 19 / 31

20 Création de matrices Opérations Chargement et sauvegarde Opérations arithmétiques Addition et soustraction terme à terme m1 + m2, m1 - m2 Multiplication Terme à terme : m1 * m2 Produit matriciel : np.dot(m1, m2) Exponentiation Terme à terme : m**p Matricielle : np.linalg.matrix_power(m, p) Transposition Sur une matrice : M.T 20 / 31

21 Création de matrices Opérations Chargement et sauvegarde Récupérations de valeurs Valeur simple m[i,j] Extraction d une partie Colonne : m[i, :] Ligne : m[:,j] Sous-matrice : m[i1:i2, j1:j2] Jusqu à la fin, à partir du début : utiliser i_min: ou :i_max 21 / 31

22 Création de matrices Opérations Chargement et sauvegarde Chargement de données Au format texte Chargement : np.loadtxt(filename) Sauvegarde : np.savetxt(filename, mat) Au format numpy Chargement : np.load(filename) Sauvegarde : np.save(filename, mat) Autres sources Matlab : scipy.io.loadmat Autres formats : XML, JSON Pas forcément dans des fichiers : site web 22 / 31

23 Algèbre linéaire Variables aléatoires Algèbre linéaire Inversion de matrice Inverse : np.linalg.inv(m) Ne jamais calculer directement A 1 b : np.dot(np.linalg.inv(b), B) Résoudre plutôt le système linéaire AX = b : np.linalg.solve(a, b) Autres opérations Trace : np.trace Déterminant : np.linalg.det 23 / 31

24 Algèbre linéaire Variables aléatoires Algèbre linéaire Décompositions Cholesky : np.linalg.cholesky Et bien d autres Autre Plein de choses! Voir les documentations des modules numpy.linalg et scipy.linalg linalg.html 24 / 31

25 Algèbre linéaire Variables aléatoires Distributions Énormément de lois classiques dans le module scipy.stats Normale monovariée ou multivariée : norm, multivariate_normal Bernoulli : bernoulli etc Une interface commune Densité : law.pdf(x) ou law.pdf(x, paramètres) Répartition : law.cdf Générateur aléatoire : law.rvs(size=(dim1, dim2)) 25 / 31

26 Présentation Dessins Matplotlib 2D Courbes Histogrammes Points Images Galerie d exemples Idéal pour trouver comme faire la visualisation de ses rêves 26 / 31

27 Présentation Dessins Courbes import matplotlib.pyplot as plt x = np.linspace(-np.pi, np.pi, 1000) y_cos = np.cos(x) 1.0 y_sin = np.sin(x) plt.plot(x, y_cos) plt.plot(x, y_sin) plt.show() / 31

28 Présentation Dessins Histogrammes data = scipy.stats.norm.rvs(size=10000) plt.hist(data) 3000 plt.show() / 31

29 Environnement de travail Présentation Dessins Images mat = np.random.randn(100, 100) plt.imshow(mat) plt.show() / 31

30 Aller plus loin Sauvegarde dans un fichier savefig à la place de plot Limites du graphique xlim(x1, x2) ylim(y1, y2) Couleurs et marqueurs plt.plot(x, y, "r-*") Voir matplotlib.pyplot.plot 30 / 31

31 Remarques finales Chez vous Prise en main de l éditeur, des bibliothèques Pratiquer sur quelques exemples Chercher dans la documentation en ligne, et sur internet en général Mini-projet à la fin du cours Charger des données Traiter les données Visualiser les résultats Site web /m2bigdata_apprentissage/ 31 / 31