slides

publicité
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Certificat Big Data – Apprentissage
TP1 – Introduction à Python
Olivier Schwander
30 septembre 2015
1 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Outline
Environnement de travail
Commentaires
Installation
Éditeur
Base du langages
Expressions
Structures de contrôle
Définition de fonction
Manipulation des données
Création de matrices
Opérations
Chargement et sauvegarde
Calcul scientifique
Algèbre linéaire
Variables aléatoires
Visualisation
2 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Commentaires
Installation
Éditeur
Remarques importantes
Ce n’est pas un cours de Python !
I
Connaissances tranposables dans d’autres langages
I
Matlab, R voire même C ou C++
Ce n’est pas un cours de programmation ou d’algorithmique
I
On supposera (volontairement ou non) quelques connaissances
de bases,
I
mais ne surtout pas hésiter à poser des questions !
3 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Commentaires
Installation
Éditeur
Pourquoi Python
Un langage généraliste
I
Gros projet ou petit projet
I
Calcul scientifique ou non
I
Interface graphique ou non
I
Client ou serveur
I
Prototype ou projet final
Pour le traitement de données
I
Calcul scientifique : numpy,
scipy
I
Apprentissage : sklearn
I
Visualisation : matplotlib
Très grande communauté
I
Académique ou entreprise
I
Beaucoup de code existant
I
Beaucoup de gens à qui poser des questions
I
Beaucoup de gens intéressés
4 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Commentaires
Installation
Éditeur
Si vous avez des habitudes
Gardez-les !
I
Système d’exploitation : Windows, Linux, Mac
I
Installation de Python
I
Éditeur de texte
5 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Commentaires
Installation
Éditeur
Distribution Python
Python Anaconda
I
À télécharger sur https://www.continuum.io/anaconda
I
Clé usb pour essayer maintenant
I
Python 3
I
Tout le nécessaire devrait être inclu
Installation
I
Voir https://www.continuum.io/downloads
I
Windows : click-click
I
Mac/Linux : bash Anaconda3-2.3.0-XXX.sh
6 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Commentaires
Installation
Éditeur
Éditeur de texte : Spyder
7 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Commentaires
Installation
Éditeur
Descriptions
Interface en style Matlab
3 sous-fenêtres
I
Code source à gauche
I
Interpréteur Python en bas à droite
I
Autres informations en haut à droite
I
Des boutons partout
Un raccourci utile
I
Ctrl+i pour obtenir de l’aide sur le code autour du curseur
8 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Expressions
Structures de contrôle
Définition de fonction
Expressions arithmétiques
À tester dans l’interpréteur :
>>>
263
>>>
256
>>>
1.5
>>>
1
>>>
1.5
(126 + 5) * 2 + 1
2**8
3/2
3//2
3.0/2.0
Attention au type des valeurs : int, float
9 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
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
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Expressions
Structures de contrôle
Définition de fonction
Bibliothèques
À tester dans l’interpréteur :
>>> import math
>>> math.sqrt(3)
1.7320508075688772
>>> math.sqrt(4)
2.0
>>> int(2.0)
2
>>> float(2)
2.0
11 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
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
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Expressions
Structures de contrôle
Définition de fonction
Listes
À tester dans l’interpréteur :
>>>
>>>
>>>
>>>
[3,
>>>
[3,
>>>
>>>
[3,
l = []
l.append(3)
l.append("toto")
print(l)
’toto’]
l
’toto’]
m = [1, 2, 3, 4]
l + m
’toto’, 1, 2, 3, 4]
13 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
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
I
Une expression booléenne
I
x<12 and y<z or a+b<espilon
14 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Expressions
Structures de contrôle
Définition de fonction
Boucles
Structure while
Structure for
while condition:
...
for i in range(n):
...
Remarques
I
La boucle for est très générique en Python
I
Notion de générateur
I
range(n) : les entiers entre 0 et n − 1 inclus
I
range(n1, n2) : les entiers entre n1 et n2 inclus
I
[a, b, c, d] : les éléments de la liste
15 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Expressions
Structures de contrôle
Définition de fonction
Définition d’une fonction
def nom(arg1, arg2, arg3):
""" Documentation optionnelle
"""
...
return resultat
I
Des arguments nommés avec des valeurs par défaut sont
possibles
I
Des fonctions avec un nombre variable d’argument aussi
16 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
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
I
Toujours découper le code en fonctions élémentaires
I
Plus facile à lire, à réutiliser, à débugger
17 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Création de matrices
Opérations
Chargement et sauvegarde
Matrices
(et tenseurs, en fait)
Bibliothèque de base
I
numpy
I
Contient les structures de données et les opérations de base
I
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
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Création de matrices
Opérations
Chargement et sauvegarde
Matrices et vecteurs particuliers
Matrices
I
Matrice diagonale : np.diag(liste_des_valeurs)
I
Matrice identité : np.eye(dim1, dim2)
I
Matrice avec des 1 partout : np.ones((dim1, dim2))
Vecteurs
I
Valeurs entre x1 et x2 (exclu) par pas de step :
np.arange(x1, x2, step)
I
n valeurs entre x1 et x2 (inclus) : np.linspace(x1, x2, n)
Aléatoire
I
Uniforme entre 0 et 1 : np.random.rand(dim1, dim2)
I
Gaussienne centrée réduite : np.random.randn(dim1, dim2) 19 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Création de matrices
Opérations
Chargement et sauvegarde
Opérations arithmétiques
Addition et soustraction terme à terme
I
m1 + m2, m1 - m2
Multiplication
I
Terme à terme : m1 * m2
I
Produit matriciel : np.dot(m1, m2)
Exponentiation
I
Terme à terme : m**p
I
Matricielle : np.linalg.matrix_power(m, p)
Transposition
I
Sur une matrice : M.T
20 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Création de matrices
Opérations
Chargement et sauvegarde
Récupérations de valeurs
Valeur simple
I
m[i,j]
Extraction d’une partie
I
Colonne : m[i, :]
I
Ligne : m[:,j]
I
Sous-matrice : m[i1:i2, j1:j2]
I
Jusqu’à la fin, à partir du début : utiliser i_min: ou :i_max
21 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Création de matrices
Opérations
Chargement et sauvegarde
Chargement de données
Au format texte
I
Chargement : np.loadtxt(filename)
I
Sauvegarde : np.savetxt(filename, mat)
Au format numpy
I
Chargement : np.load(filename)
I
Sauvegarde : np.save(filename, mat)
Autres sources
I
Matlab : scipy.io.loadmat
I
Autres formats : XML, JSON
I
Pas forcément dans des fichiers : site web
22 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Algèbre linéaire
Variables aléatoires
Algèbre linéaire
Inversion de matrice
I
Inverse : np.linalg.inv(M)
I
Ne jamais calculer directement A−1 b :
np.dot(np.linalg.inv(b), B)
I
Résoudre plutôt le système linéaire AX = b :
np.linalg.solve(A, b)
Autres opérations
I
Trace : np.trace
I
Déterminant : np.linalg.det
23 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Algèbre linéaire
Variables aléatoires
Algèbre linéaire
Décompositions
I
Cholesky : np.linalg.cholesky
I
Et bien d’autres
Autre
I
Plein de choses !
I
Voir les documentations des modules numpy.linalg et
scipy.linalg
http://docs.scipy.org/doc/numpy/reference/routines.
linalg.html
http://docs.scipy.org/doc/scipy/reference/linalg.html
24 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Algèbre linéaire
Variables aléatoires
Distributions
Énormément de lois classiques dans le module scipy.stats
I
Normale monovariée ou multivariée : norm,
multivariate_normal
I
Bernoulli : bernoulli
I
etc
Une interface commune
I
Densité : law.pdf(x) ou law.pdf(x, paramètres)
I
Répartition : law.cdf
I
Générateur aléatoire : law.rvs(size=(dim1, dim2))
http://docs.scipy.org/doc/scipy/reference/stats.html
25 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Présentation
Dessins
Matplotlib
Visualisation 2D
I
Courbes
I
Histogrammes
I
Points
I
Images
Galerie d’exemples
I
Idéal pour trouver comme faire la visualisation de ses rêves
http://matplotlib.org/gallery.html
26 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Présentation
Dessins
Courbes
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 1000)
y_cos = np.cos(x)
y_sin = np.sin(x)
1.0
0.5
plt.plot(x, y_cos)
plt.plot(x, y_sin)
plt.show()
0.0
0.5
1.0
4
3
2
1
0
1
2
3
4
27 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Présentation
Dessins
Histogrammes
data = scipy.stats.norm.rvs(size=10000)
plt.hist(data)
plt.show()
3000
2500
2000
1500
1000
500
0
5
4
3
2
1
0
1
2
3
4
28 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Présentation
Dessins
Images
mat = np.random.randn(100, 100)
plt.imshow(mat)
plt.show()
0
20
40
60
80
0
20
40
60
80
29 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Aller plus loin
Sauvegarde dans un fichier
I
savefig à la place de plot
Limites du graphique
I
xlim(x1, x2)
I
ylim(y1, y2)
Couleurs et marqueurs
I
plt.plot(x, y, "r-*")
I
Voir http://matplotlib.org/api/pyplot_api.html#
matplotlib.pyplot.plot
30 / 31
Environnement de travail
Base du langages
Manipulation des données
Calcul scientifique
Visualisation
Remarques finales
Chez vous
I
Prise en main de l’éditeur, des bibliothèques
I
Pratiquer sur quelques exemples
I
Chercher dans la documentation en ligne, et sur internet en
général
Mini-projet à la fin du cours
I
Charger des données
I
Traiter les données
I
Visualiser les résultats
Site web
http://www-connex.lip6.fr/~schwander/enseignement/
2015-2016/m2bigdata_apprentissage/
31 / 31
Téléchargement