TD 6 : Numpy

Dans ce TD, nous apprenons et pratiquons les outils de la classe numpy. Cela vous équipera les compétences d'analyses de données ce qui sont demandées dans beaucoup d'entreprises technologiques.

Vous pouvez trouver ici des méthodes utiles pour les manipulations en numpy, compilés par Scott Shell.

Exo 1: Capteur de température

Supposons que vous ayez installé un capteur de température dans votre jardin pour mesurer les données de température sur plusieurs semaines. Chaque dimanche, vous récupérer le capteur de température du jardin pour numériser les valeurs du capteur. Vous savez que les valeurs du capteur du dimanche sont donc défectueuses car, pendant une partie de la journée, elles mesurent la température dans votre maison plutôt qu'à l'extérieur.

Vous voulez modifier vos données en remplaçant chaque valeur du capteur du dimanche par la valeur moyenne des sept jours précédents (vous incluez la valeur du dimanche dans le calcul de la moyenne parce qu'elle n'est pas entièrement défectueuse).

# Dependences
import numpy as np

# Données du capteur (Lu, Ma, Me, Je, Ve, Sa, Di)

tmp = np.array([1,2,3,4,3,4,4,
                   5,3,3,4,3,4,6,
                    6,5,5,5,4,5,5])

# modifier les données 
# votre code ici (solution avec une ligne de code)

Dans cet exercise, vous pouvez utiliser les méthodes average(avec notion d'axis) et reshape dans numpy.

Exo 2: Tri

Dans cet exercise, vous allez apprendre à utiliser les méthodes sort et argsort dans numpy. Étant données les notes des étudiants, retourner les trois étudiants avec les meilleures notes.

# Dependences
import numpy as np

# Données: notes pour différents étudiants

notes = np.array([15, 13, 14, 10, 17, 20, 16, 14])
etudiants = np.array(["Alice", "Bob", "Charlie", "Daniel", "Eric", "Franck", "Guillaume", "Hélène"])

# votre code ici (solution avec une ligne de code)

Exo 3: Fonctions lambda

Rappel: les fonctions lambda sont les fonctions anonymes qu'on peut définir en une ligne de code. Le format est lambda arguments: expressions.

Étant données une liste des livres avec les évaluations, retourner les livres dont l'évaluation est au moins 3.9. Vous pouvez créer les fonctions lambda pour simplifier la tâche.

# Dependences
import numpy as np

# Données: (colonne = [titre, eval])

livres = np.array([["Coffee Break Numpy", 4.6],
                        ["Lord of the Rings", 5.0],
                        ["Harry Potter", 4.3],
                        ["Winnie the Pooh", 3.9],
                        ["The Design of Algorithms", 3.0],
                        ])

# votre code ici 

Exo 4: Analyse d'association simple

Avez-vous déjà acheté un produit recommandé par les algorithmes d'Amazon? Les algorithmes de recommandation sont souvent basés sur une technique appelée analyse d'association. Dans cette section, vous découvrirez l'idée de base de l'analyse d'association et comment plonger votre orteil dans l'océan profond des systèmes de recommandation.

L'analyse d'association est basée sur les données historiques des clients, telles que les données les gens qui ont acheté x ont aussi acheté y sur Amazon. Cette association de différents produits est un concept de marketing puissant car elle permet non seulement de relier des produits apparentés mais aussi complémentaires, mais aussi de vous fournir un élément de preuve sociale - savoir que d'autres personnes ont acheté un produit augmente la sécurité psychologique pour vous de l'acheter vous-même. Il s'agit d'un excellent outil pour les spécialistes du marketing.

Exemple

Considérons l'exemple suivant. Les quatre clients Alice, Bob, Louis et Larissa ont acheté différentes combinaisons de produits : livre, jeu, ballon de football, ordinateur portable, écouteurs. Imaginez que vous connaissez tous les produits achetés par les quatre personnes, mais pas si Louis a acheté l'ordinateur portable. Qu'en pensez-vous : Louis est-il susceptible d'acheter l'ordinateur portable ?

Livres Jeux de vidéo Ballons Ordinateurs Casques
Alice
Bob
Louis
Larissa

L'analyse d'association (ou filtrage collaboratif) apporte une réponse à ce problème. L'hypothèse sous-jacente est que si deux personnes ont effectué des actions similaires dans le passé (par exemple, elles ont acheté un produit similaire), elles sont plus susceptibles de continuer à effectuer des actions similaires à l'avenir. Louis a un comportement d'achat similaire à celui d'Alice, et Alice a acheté l'ordinateur portable. Ainsi, le système de recommandation prévoit que Louis est susceptible d'acheter l'ordinateur portable également.

Une analyse simple

Considérons le problème suivant: étant donnée une matrice dont une ligne par client et une colonne par produit. Les deux premiers produits avec les indices de colonne 0 et 1 sont des jeux, et les deux derniers avec les indices de colonne 2 et 3 sont des livres. La valeur 1 dans la cellule (i,j) indique que le client i a acheté le produit j.

Une information importante est la fraction des clients achetant deux livres ensemble. Avec cette information, le système de recommandation peut proposer aux clients un "lot" de livres à acheter s'il constate qu'ils avaient initialement l'intention d'acheter un seul livre. Notre tâche consiste à trouver la fraction de clients qui ont acheté les deux livres (par exemple, 0.1 ou 0.4, etc).

## Dependencies
import numpy as np

## Données
## ligne = [jeu 1, jeu 2, livre 1, livre 2] 
## valeur 1 indique que le produit est acheté. 

panier = np.array([[0, 1, 1, 0],
                   [0, 0, 0, 1],
                   [1, 1, 0, 0],
                   [0, 1, 1, 1],
                   [1, 1, 1, 0],
                   [0, 1, 1, 0],
                   [1, 1, 0, 1],
                   [1, 1, 1, 1]])
                   
## Calculer la fraction des clients achetant deux livres ensemble     
## votre code ici
               

Un peu plus approfondie

Continuons sur les données précédentes. Les clients achètent des produits individuels à partir d'un ensemble de quatre produits différents (jeu1, jeu2, livre, livre2). Votre entreprise veut vendre des produits connexes (proposer à un client un produit supplémentaire, souvent connexe, à acheter). Pour chaque combinaison de deux produits, vous devez calculer combien de fois ils ont été achetés par le même client, et trouver les deux produits achetés ensemble le plus souvent (afin de proposer d'une stratégie commerciale à votre entreprise).

Exo 5: Pandas Series

Utiliser NumPy pour générer un tableau 5 nombre aléatoires entre -10 et 10 qui représentent la température en hiver. Puis, effectuer les opérations suivantes:

Exo 6: Pandas DataFrames

Etant donné le dictionnaire suivant:

temps = {'Mon': [68, 89], 'Tue': [71, 93], 'Wed': [66, 82],
                'Thu': [75, 97], 'Fri': [62, 79]}              

Dffectuer les opérations suivantes: