Combien coûte un avocat ?

Analyse bayésienne des données en Python

Michal Oleszak

Machine Learning Engineer

The Avocado, Inc.

Fruits d'avocat.

Analyse bayésienne des données en Python

Étude de cas : estimer l'élasticité-prix

Objectif : estimer l'élasticité-prix des avocats et optimiser le prix

(élasticité-prix = impact d'une variation de prix sur le volume des ventes)

  1. Ajuster un modèle de régression bayésien.
  2. Vérifier le modèle pour en confirmer la validité.
  3. Prédire le volume de ventes selon différents prix.
  4. Proposer le prix maximisant le profit et l'incertitude associée.
Analyse bayésienne des données en Python

Données sur les avocats

print(avocado)
           date  price      volume  type_organic
0    2015-01-04   0.95  313.242777             0
1    2015-01-11   1.01  290.635427             0
2    2015-01-18   1.03  290.434588             0
3    2015-01-25   1.04  284.703108             0
..          ...    ...         ...           ...
334  2018-03-04   1.52   16.344308             1
335  2018-03-11   1.52   16.642349             1
336  2018-03-18   1.54   16.758042             1
337  2018-03-25   1.55   15.599672             1
1 Data source: https://www.kaggle.com/neuromusic/avocado-prices
Analyse bayésienne des données en Python

Priori dans pymc3

formula = "num_bikes ~ temp + work_day + wind_speed"

with pm.Model() as model:

    pm.GLM.from_formula(formula, data=bikes)
    trace = pm.sample(draws=1000, tune=500)
Analyse bayésienne des données en Python

Priori dans pymc3

formula = "num_bikes ~ temp + work_day + wind_speed"

with pm.Model() as model:
    priors = {"wind_speed": pm.Normal.dist(mu=-5)}
    pm.GLM.from_formula(formula, data=bikes, priors=priors)
    trace = pm.sample(draws=1000, tune=500)
Analyse bayésienne des données en Python

Extraire des tirages de la trace

temp_draws = trace.get_values("temp")

print(temp_draws)
array([6.8705346, 6.7421152, 6.7393061, ..., 5.966574 , 6.1274128, 6.7149277])
Analyse bayésienne des données en Python

Ce qu'il vous faut

Ajustement du modèle :

  • pm.Model()
  • pm.GLM.from_formula()
  • pm.sample()
  • pm.Normal()

Visualisation :

  • pm.forestplot()
  • pm.traceplot()

 

Prédictions :

  • pm.fast_sample_posterior_predictive()

 

Inférence :

  • az.hdi()
Analyse bayésienne des données en Python

Passons à la pratique !

Analyse bayésienne des données en Python

Preparing Video For Download...