media_transformation#
Module for applying media transformations to media data.
Examples#
Create a media transformation for online and offline media channels:
from pymc_marketing.mmm import (
GeometricAdstock,
HillSaturation,
MediaTransformation,
MichaelisMentenSaturation,
)
# Shared media transformation for all offline media channels
offline_media_transform = MediaTransformation(
adstock=GeometricAdstock(l_max=15),
saturation=HillSaturation(),
adstock_first=True,
)
# Shared media transformation for all online media channels
online_media_transform = MediaTransformation(
adstock=GeometricAdstock(l_max=10),
saturation=MichaelisMentenSaturation(),
adstock_first=False,
),
)
Create a combined media configuration for offline and online media channels:
from pymc_marketing.mmm import (
MediaConfig,
MediaConfigList,
)
media_configs: MediaConfigList([
MediaConfig(
name="offline",
columns=["TV", "Radio"],
media_transformation=offline_media_transform,
),
MediaConfig(
name="online",
columns=["Facebook", "Instagram", "YouTube", "TikTok"],
media_transformation=online_media_transform,
),
])
Apply the media transformation to media data in PyMC model:
import pymc as pm
import pandas as pd
df: pd.DataFrame = ...
media_columns = media_configs.media_values
coords = {
"date": df["week"],
"media": media_columns,
}
with pm.Model(coords=coords) as model:
media_data = pm.Data(
"media_data",
df.loc[:, media_columns].to_numpy(),
dims=("date", "media")
)
transformed_media_data = media_configs(media_data)
Classes
|
Configuration for a media transformation to certain media channels. |
|
Wrapper for a list of media configurations to apply to media data. |
|
Wrapper for applying adstock and saturation transformation to media data. |