prise de note cours 1 Bonneton
This commit is contained in:
parent
4eee3e5922
commit
b6a6d63390
158
Techniques avancées de programmation/Data science & Big D.md
Normal file
158
Techniques avancées de programmation/Data science & Big D.md
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
Cours de E.Bonneton
|
||||||
|
|
||||||
|
# Intro
|
||||||
|
|
||||||
|
Cours initialement prévu pour les master finance (MPIF).
|
||||||
|
|
||||||
|
On commence par installation de ce qu'il faut installer. 3 lib python : panda, numpy et scipy
|
||||||
|
|
||||||
|
On va bosser avec Python. Python est le 2e langage au monde, juste derrière Java. Il aime bien R aussi mais pour pas trop en rajouter on va pas en faire. À l'occase on peut installer et tester R (mais sans le dire au père N), c'est vraiment chouette.
|
||||||
|
|
||||||
|
On est pas précurseurs en la matière, on aurait pu y a 5/6 ans. Mais à l'époque on avait pas les même capacités techniques et on galérait bien notre maman pour charge des set de data de 1Go
|
||||||
|
|
||||||
|
3 grands axes dans le ML : apprentissage non supervisé (clustering, réduction), supervisé (classification/régression) et de renforcement.
|
||||||
|
|
||||||
|
L'IA n'est pas vraiment I... Un système de recommandation, par exemple, c'est très puissant mais ça fait 10 lignes. Ça se fait même assez rapidement : les entreprises se mettent à exploiter leurs données (genre Darty ou MAIF). Obtenir les données : pas si difficile aujourd'hui, bcp en open-source.
|
||||||
|
|
||||||
|
Plan sur présentation cours. On va faire première page ensemble, le contenu de la deuxième devrait être vu avec l'autre prof (du lendemain).
|
||||||
|
|
||||||
|
Environnement technique :
|
||||||
|
|
||||||
|
- Python 3.7
|
||||||
|
- Enthought Canopy // Anaconda
|
||||||
|
- Apache Spark
|
||||||
|
- Tensor Flow
|
||||||
|
- Keras
|
||||||
|
|
||||||
|
Plan de métro plutôt riche : le champ st vaste. On ne va faire qu'un cours d'introduction qui va nous donner une vision d'ensemble, à nous d'aller ensuite où on veut.
|
||||||
|
|
||||||
|
Installation d'Anaconda. Revue rapide de R.
|
||||||
|
|
||||||
|
# Python
|
||||||
|
|
||||||
|
n guerre avec R. Ceux de la finance préfèrent ce dernier. Ls deux sont intéressants, mais on fera pas de réseau de neurones avec R. Explorer R à l'occasion.
|
||||||
|
|
||||||
|
## Types
|
||||||
|
|
||||||
|
- int
|
||||||
|
- float
|
||||||
|
- str
|
||||||
|
- bool
|
||||||
|
|
||||||
|
## Affichage / Saisie
|
||||||
|
|
||||||
|
afficher
|
||||||
|
|
||||||
|
`print("couille")`
|
||||||
|
|
||||||
|
saisir :
|
||||||
|
|
||||||
|
` v = int(input("insérer une valeur"))`
|
||||||
|
|
||||||
|
## Conditions
|
||||||
|
|
||||||
|
```python
|
||||||
|
if:
|
||||||
|
...
|
||||||
|
|
||||||
|
if:
|
||||||
|
...
|
||||||
|
else:
|
||||||
|
...
|
||||||
|
|
||||||
|
if:
|
||||||
|
...
|
||||||
|
elif:
|
||||||
|
...
|
||||||
|
else:
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Boucles
|
||||||
|
|
||||||
|
```python
|
||||||
|
for i in range(0, 10):
|
||||||
|
|
||||||
|
for i in range(10):
|
||||||
|
if(x is 1):
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
||||||
|
for i in range(0, 10, 2):
|
||||||
|
```
|
||||||
|
|
||||||
|
```python
|
||||||
|
while ... :
|
||||||
|
```
|
||||||
|
|
||||||
|
## Listes
|
||||||
|
|
||||||
|
```python
|
||||||
|
list = [1, 2, 3]
|
||||||
|
tuple = (1, 2, 3)
|
||||||
|
dict = { "one" : 1, "two": 2, "three": 3}
|
||||||
|
|
||||||
|
# permet de tout sélectionner avec un offset correspondant au chiffre
|
||||||
|
list[:2]
|
||||||
|
list[2:]
|
||||||
|
list[-1:]
|
||||||
|
|
||||||
|
# fonctions
|
||||||
|
list.append(4) # une seule valeur ou un tableau
|
||||||
|
list. extend(5, 6) # plusieurs valeur
|
||||||
|
list.sort()
|
||||||
|
list.sort(reverse=True)
|
||||||
|
|
||||||
|
(x, y) = "56,34".split(',') # x = 56 et y = 34
|
||||||
|
|
||||||
|
dict.get("key") # revient à dict["key"]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Importation de modules
|
||||||
|
|
||||||
|
```python
|
||||||
|
import numpy as np
|
||||||
|
from math import random as rd
|
||||||
|
```
|
||||||
|
|
||||||
|
Ne pas fabriquer ses jeux de données : c'est chiant. Y en a partout, se servir.
|
||||||
|
|
||||||
|
## Fonctions
|
||||||
|
|
||||||
|
```python
|
||||||
|
def DoSomething(f, x)
|
||||||
|
return f(x)
|
||||||
|
|
||||||
|
print(Squareit, 3)
|
||||||
|
|
||||||
|
# on utilise lambda pour faire une fonction inline
|
||||||
|
print(DoSomething)(lambda x: x * x * x, 3)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Biblio
|
||||||
|
|
||||||
|
Voir PDF, du plus simple au plus dur.
|
||||||
|
|
||||||
|
Sinon en ligne on a toute la doc de Scipy.
|
||||||
|
|
||||||
|
# Pandas
|
||||||
|
|
||||||
|
Lancer anaconda > Jupyter lab
|
||||||
|
|
||||||
|
Sur des jeux de data à partir de 2/3 Go, il vaut mieux utiliser Sparks.
|
||||||
|
|
||||||
|
De base, `describe()` retourne que sur les colonnes calculables (int), mais en faisant un `include='all'` il nous retourne des trucs intéressants aussi, genre "top" et "freq" qui indiquent l'entrée qui revient le plus souvent et le nombre.
|
||||||
|
|
||||||
|
Les notebook sont exportables ! Genre en HTML, LaTex...
|
||||||
|
|
||||||
|
Une grosse partie du travail est dans le traitement des données et la normalisation du tableau.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Nettoyage de données
|
||||||
|
|
||||||
|
NaN : la question qui se pose est : qu'en faire ?
|
||||||
|
Une solution intéressante st par exemple de calculer la moyenne (sans les NaN), et remplacer les NaN par cette moyenne. On peut aussi faire un tirage au hasard. Il y a vraiment beaucoup de possibilités. Il faut s'adapter au type de colonne auquel on à faire. Supprimer la ligne est pas vraiment la meilleure solution, on vire souvent trop de trucs.
|
Loading…
Reference in a new issue