关于 meridian-model-building
此技能指导 Agent 从 CSV 数据构建 Meridian 模型,涵盖列映射、模型配置、拟合和保存,并将步骤整理为 Python 脚本。流程在各检查点要求用户确认。
主要功能
- 01检查 CSV 列并映射输入
- 02配置 Meridian 模型参数
- 03生成探索性数据分析报告
- 04拟合并序列化模型
- 05在检查点暂停并征求确认
适用场景
- 01根据 CSV 数据构建 Meridian 模型
- 02拟合前通过 EDA 报告检查数据
- 03保存已拟合或已初始化的模型
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ google/ meridian --skill meridian-model-building安装后在 Claude Code 中输入/meridian-model-building确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/csv_format_reference.mddata_builder_template.mdmodel_spec_template.mdscript_template.md详细介绍
Meridian 模型构建技能
此技能将引导用户创建 Meridian 模型,并将代码逐步累积到 Python 脚本中。
核心工作流
交互检查点规则
在此工作流中,你会遇到关键交互检查点。在每个检查点,你必须:
- 向用户展示当前建议的配置、参数、映射、脚本路径或状态,供其审批。
- 使用可用的用户交互工具(例如
ask_question)询问用户是否准备好继续,并将问题设置为多选题。不要使用普通聊天文本。 - 等待用户回复后再继续。
- 强制要求:无论初始提示中的指示如何,你都必须在每个检查点暂停(即使用户请求中包含“自主运行”“直接执行”“自主修复”等措辞)。 初始请求不能绕过这些交互检查点。
- 注意:如果用户在检查点给出笼统的同意(例如“继续”“按你认为合适的做”),则使用建议的默认选项继续。
Python 环境和 Meridian 源码
运行任何 Python 代码前,先选择安装了 google-meridian 的环境所用的解释器,并在以下所有命令和脚本中使用该解释器:
- 如果用户指定了环境,则使用该环境。否则,如果虚拟环境已处于激活状态(设置了
VIRTUAL_ENV或CONDA_PREFIX),则使用python3。否则,如果项目目录(当前工作目录)中有虚拟环境(.venv/或venv/),则使用其解释器(例如.venv/bin/python3)。否则使用python3。 - 使用
<interpreter> -c "import meridian"检查。如果失败,请询问用户应改用哪个环境,不要擅自搜索机器或安装软件包。
以下步骤会要求你阅读 Meridian 模块(例如 meridian.model.spec),以确认参数名称和默认值。用户通常从 PyPI 安装 Meridian(pip install google-meridian),因此其源码不会位于用户的项目文件夹中。请找到已安装的软件包并阅读其中的文件,或使用 inspect 打印签名和文档字符串:
<interpreter> -c "import meridian, os; print(os.path.dirname(meridian.__file__))"
1. 初始设置
- 请用户提供输入 CSV 文件路径、生成的 Python 脚本所需路径、EDA HTML 报告输出路径,以及保存的模型路径(默认为
meridian_model.binpb)。如果用户未指定输出路径,则将当前项目目录(或相对于输入数据目录)的model_build/设为脚本和所有输出文件的默认目录(meridian_model.binpb、eda.html)。 - 关键交互检查点:向用户展示收集到的路径,并在加载数据前获得确认。
2. 添加数据加载与列映射代码
- 目标模块:
meridian.data.data_frame_input_data_builder - 操作:
- 检查 CSV 格式:加载数据之前,验证 CSV 数据格式是否正确。使用
meridian-doc-consultant技能,在developers.google.com/meridian上查找与数据中观察到的列相匹配的数据加载指南(例如,“加载不含覆盖率和频次的地理层级数据”或“加载包含自然流量和非媒体数据的地理层级数据”),了解预期的列和数据类型。请参阅references/csv_format_reference.md,了解预期的行列结构和数据质量防护规则。如果格式不正确或缺少必需列,尝试自动将数据集转换为用户所需的格式(例如,重命名列、调整结构),除非你不确定且需要用户输入。 - 使用 Python 读取所提供 CSV 的标题行,以获取列名。
- 根据列关键词提出启发式映射(例如,
'sales'→kpi_col,'spend'→media_spend_cols),并根据列推断kpi_type('revenue'或'non_revenue')(例如,'revenue'或'sales'表示'revenue',而'conversions'或'leads'表示'non_revenue')。 - 稳健映射:如果用户提示中指定的列名在 CSV 中不存在,不要认定它就是字面上的列名,尤其当它看起来像描述(例如,
'media_impressions'与'ChannelX_impression')时。请使用启发式方法查找匹配的列并继续操作。 - 向用户展示建议的映射。
- 关键交互检查点:向用户展示建议的列映射,并在继续配置模型之前获得批准。
- 使用
meridian.data.data_frame_input_data_builder.DataFrameInputDataBuilder及其with_*方法(例如with_kpi、with_media)逐步生成数据加载代码。请参阅 data_builder_template.md。
- 检查 CSV 格式:加载数据之前,验证 CSV 数据格式是否正确。使用
3. 添加模型配置代码
- 目标模块:
meridian.model.spec、meridian.model.model - 操作:
- 阅读
meridian.model.spec中的ModelSpec和PriorDistribution定义。 - 引导用户完成配置,并询问相关值,同时根据源代码文档字符串解释这些值的用途。
- 关键交互检查点:向用户展示建议的模型规格参数,并在继续之前获得批准。
- 逐步生成用于初始化
meridian.model.spec.ModelSpec和meridian.model.model.Meridian的代码。请参阅 model_spec_template.md。 - 生成代码:
mmm.sample_prior()
- 阅读
4. 添加探索性数据分析(EDA)代码
- 目标模块:
meridian.model.eda.meridian_eda - 操作:
- 阅读
meridian_eda.py或模块文档字符串,确认generate_and_save_report方法。 - 逐步生成用于初始化
meridian_eda.MeridianEDA并使用用户指定的路径调用generate_and_save_report(filepath)的代码。 - 关键交互检查点:向用户展示 EDA 输出路径配置,并在继续模型拟合步骤之前获得批准。
- 阅读
5. 添加模型拟合代码
- 目标模块:
meridian.model.model - 操作:
- 阅读
meridian.model.model中的sample_posterior方法,了解其参数。 - 提示用户提供 MCMC 参数:
n_chains、n_adapt、n_burnin、n_keep。 - 关键交互检查点:向用户展示 MCMC 参数,并在继续编写模型拟合代码之前征得用户批准。
- 累积代码:
mmm.sample_posterior(...)
- 阅读
6. 添加模型保存代码
- 目标模块:
meridian.schema.serde.meridian_serde - 操作:
- 生成代码,使用
meridian_serde.save_meridian()将模型保存到用户指定的路径(或默认路径)。请参阅 script_template.md。 - 默认文件名:保存模型的默认文件名为
meridian_model.binpb(位于model_build/目录中)。如果用户未指定模型文件名,则使用此文件名,即使脚本文件名不同也应如此。 - 跳过采样的处理:如果用户要求跳过拟合或后验采样,仍需包含模型保存步骤(
meridian_serde.save_meridian(mmm, save_path)),并使用已初始化的Meridian模型对象,以确保始终创建输出模型文件。 - 警告: 不要使用已弃用的
meridian.model.model.save_mmm函数。只能使用meridian_serde.save_meridian。 - 关键交互检查点:向用户展示模型保存路径和文件名,并在继续执行脚本之前征得用户批准。
- 生成代码,使用
7. 执行与脚本设置
- 操作:
- 将累积的 Python 脚本写入用户指定的路径。如果文件写入工具可以要求用户审阅已写入的文件,请勿请求审阅:下一个检查点已经会征求用户批准,额外提示会暂停工作流。
- 关键交互检查点:询问用户是否最终确认现在执行模型构建脚本。
- 保留产物:完成需要生成输出(如脚本、模型或报告)的任务时,不要在回合结束时删除这些生成的产物。它们是用户要求交付的内容。仅在必要时清理真正的临时文件。
- 输出路径处理:在生成的脚本中,使用步骤 1 中确认的输出路径,并以脚本运行时所在的项目目录为相对路径基准(或使用绝对路径)。
- 执行脚本:
- 始终以项目目录作为工作目录运行脚本(而不是某个子目录),以确保相对路径按确认的方式解析。
- 使用上文“Python 环境和 Meridian 源码”中选定的解释器。
- 命令示例:
.venv/bin/python3 model_build/my_model.py
- 处理长时间运行:如果命令因执行时间过长而在后台运行,请等待后台任务完成,并检查最终输出以排查运行时错误。
- 区分错误处理方式:
- 如果是语法错误或导入错误,请阅读相关源代码,了解正确用法或接口。
- 如果是ValueError 或参数约束违反(例如,
knots过大),请检查类或函数的文档字符串,或查阅meridian-doc-consultant技能,从文档中查找有效值。 - 自主处理:如果修复需要更改配置,请向用户征求确认。如果用户回复授权自主处理,则继续修复。
8. 结论
- 操作:
- 确认执行成功并已生成产物。
评论
支持 Markdown