Combien coûte un avocat ?

Analyse de données bayésienne en Python

Michal Oleszak

Machine Learning Engineer

The Avocado, Inc.

Fruits d'avocat.

Analyse de données bayésienne 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. Contrôler le modèle pour vérifier sa validité.
  3. Prédire le volume pour différents prix.
  4. Proposer le prix maximisant le profit et l’incertitude associée.
Analyse de données bayésienne 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 de données bayésienne en Python

Priors 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 de données bayésienne en Python

Priors 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 de données bayésienne en Python

Extraire des tirages du trace

temp_draws = trace.get_values("temp")

print(temp_draws)
array([6.8705346, 6.7421152, 6.7393061, ..., 5.966574 , 6.1274128, 6.7149277])
Analyse de données bayésienne 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 de données bayésienne en Python

Passons à la pratique !

Analyse de données bayésienne en Python

Preparing Video For Download...