causal-learn: Python 中的因果发现
Causal-learn(文档,论文)是一个用于因果发现的 Python 包,实现了经典和最先进的因果发现算法,它是 Tetrad 的 Python 翻译和扩展版本。
该包正在积极开发中。我们非常欢迎反馈(问题、建议等)。
包概述
我们的 causal-learn 实现了以下因果发现方法:
- 基于约束的因果发现方法
- 基于评分的因果发现方法
- 基于约束函数因果模型的因果发现方法
- 隐藏因果表示学习
- 基于排列的因果发现方法
- Granger 因果关系
- 用于构建自己方法的多种实用工具,如独立性检验、评分函数、图操作和评估
安装
Causal-learn 需要预先安装以下包:
- python 3(>=3.7)
- numpy
- networkx
- pandas
- scipy
- scikit-learn
- statsmodels
- pydot
(用于可视化)
- matplotlib
- graphviz
要使用 causal-learn,我们可以使用 pip 安装:
pip install causal-learn
文档
请参阅 causal-learn 文档 获取详细教程和用法。
运行示例
对于因果发现中的搜索方法,在 'tests' 目录中有各种运行示例,如 TestPC.py 和 TestGES.py。
对于已实现的模块,如(条件)独立性检验方法,我们提供了单元测试,方便开发您自己的方法。
基准测试
为了方便我们的社区,CMU-CLeaR 小组维护了一个包含真实场景和各种学习任务的基准数据集列表。请参考以下链接:
- https://github.com/cmu-phil/example-causal-datasets(由 Joseph Ramsey 维护)
- https://www.cmu.edu/dietrich/causality/projects/causal_learn_benchmarks
如果您对高质量的因果数据集有任何建议,请随时告诉我们。我们感谢任何有利于因果关系社区发展的努力。
贡献
如果您发现任何意外情况,请随时提出问题。 如果您想为 causal-learn 做出贡献,请创建拉取请求,最好在通过 'tests/' 中的单元测试后进行。 我们一直致力于让我们的社区变得更好!
在 Python 中运行 Tetrad
尽管 causal-learn 为一些因果发现算法提供了 Python 实现,但目前在经典的基于 Java 的 Tetrad 程序中还有更多算法。对于希望将 Tetrad 中的任意 Java 代码作为 Python 工作流程一部分的用户,我们强烈建议考虑使用 py-tetrad。这里有一个可重用示例列表,展示了如何轻松地从最全面的 Tetrad Java 代码库中受益。
引用
请按以下格式引用:
@article{zheng2024causal,
title={Causal-learn: Causal discovery in python},
author={Zheng, Yujia and Huang, Biwei and Chen, Wei and Ramsey, Joseph and Gong, Mingming and Cai, Ruichu and Shimizu, Shohei and Spirtes, Peter and Zhang, Kun},
journal={Journal of Machine Learning Research},
volume={25},
number={60},
pages={1--8},
year={2024}
}