causal-learn基本使用方法
文章目录
- 一、前言
- 二、内容
- 2.1 支持算法
- 2.2 独立性测试
- 2.3 评分函数
- 三、安装causal-learn
- 3.1可以通过pip来安装
- 3.2Requirements
- 四、用法举例
- 4.1以pc算法为例
- 4.2参数解释
- 4.3Returns
- 4.3完整样例
- 4.4运行结果
- 五、其它补充
- 5.1 相关链接
- 5.2参考
一、前言
自己在使用微软Dowhy和causal-learn后写下此文,希望各位避坑!!!
Causal-learn,由CMU张坤老师主导,多个团队(CMU因果研究团队、广工DMIR实验室、宫明明老师团队和Shohei Shimizu老师团队)联合开发出品的因果发现算法平台。
Causal-learn用Python实现了CMU开发的基于Java的Tetrad因果发现平台(WAIC2020 SAIL 之 L奖),并进一步加入新的算法和功能。其中包含了因果发现的经典算法与API,并且提供了模块化的代码,以方便研究者实现自己的算法。Causal-learn所有模块均基于Python实现,从而避免了传统因果发现库对R/Java的依赖,为Python开发者提供便利。
(总结来说,causal-learn比微软的DoWhy友好太多了!!!)
二、内容
2.1 支持算法
Constraint-based causal discovery methods
PC
FCI
CD-NOD
Score-based causal discovery methods
GES with the BIC score or generalized score
Exact Search
Causal discovery methods based on constrained functional causal models
LiNGAM-based Methods
Post-nonlinear causal models
Additive noise models
Hidden causal representation learning
- Generalized Independence Noise (GIN) condition-based method
Granger causality
- Linear granger causality
2.2 独立性测试
Fisher-z test
Missing-value Fisher-z test
Chi-Square test
Kernel-based conditional independence (KCI) test and independence test
G-Square test
2.3 评分函数
BIC score
BDeu score
Generalized score with cross validation
Generalized score with marginal likelihood
三、安装causal-learn
3.1可以通过pip来安装
pip install causal-learn
3.2Requirements
python 3
numpy
networkx
pandas
scipy
scikit-learn
statsmodels
pydot
(For visualization)
matplotlib
graphviz
pygraphviz (might not support the most recent Mac)
四、用法举例
4.1以pc算法为例
cg = pc(data, alpha, indep_test, stable, uc_rule, uc_priority, mvpc, correction_name, background_knowledge, verbose, show_progress)
4.2参数解释
* data:必须要求numpy.ndarray,格式为(n_samples, n_features),其中n_samples 是样本数,n_features 是特征数* alpha:独立性测试的显著性水平,(float) in (0, 1),Default: 0.05.* indep_test:独立性测试的方法 Default: ‘fisherz’* stable:是否执行稳定的图骨架发现,Default: True.* uc_rule:how unshielded colliders are oriented. Default: 0.* uc_priority:rule of resolving conflicts between unshielded colliders. Default: 2.* mvpc:数据是否包含缺失值,若包含,请设置为True. Default: False.* correction_name:Missing value correction if using missing-value PC* background_knowledge:背景知识(指定因果边及方向)* verbose:如果要打印verbose日志输出,请设置为True,Default: False.* show_progress:如果要在控制台显示算法的进展,则为True。默认情况下. Default: True.
4.3Returns
a CausalGraph object
- cg.G.graph[j,i]=1 and cg.G.graph[i,j]=-1 indicate i –> j;
- cg.G.graph[i,j] = cg.G.graph[j,i] = -1 indicate i — j;
- cg.G.graph[i,j] = cg.G.graph[j,i] = 1 indicates i <-> j.
4.3完整样例
import numpy as npfrom causallearn.search.ConstraintBased.PC import pcfrom causallearn.utils.cit import fisherz,chisq,gsq,mv_fisherz,kci# 导入不同的独立性测试方法data_path="TestData/data_discrete_1.txt"example_data = np.loadtxt(data_path,skiprows=1)# skiprows,跳过读取数据的第一行(标题行)example_result = pc(example_data,0.05,kci,True,0,-1)example_result.to_nx_graph()example_result.draw_nx_graph(skel=False)
4.4运行结果
Green: undirected; Blue: directed; Red: bi-directed
(注意,这个结果图中,没有红色箭头)
五、其它补充
5.1 相关链接
github仓库
开发文档
因果科学算法、框架、数据集汇总
5.2参考
Causal learn使用方法
因果发现工具|causal-learn介绍
author:yewii
causal-learn基本使用方法相关推荐
- Java learn lambda的方法引用
lambda 的方法引用 实质也是建立在把引用方法的代码段简写成lambda表达式 分为以下几种: 1.引用静态方法 首先得有个静态方法 写成静态方法是因为 main主方法用类名调用时只会调用静态方法 ...
- TF学习——TF之API:TensorFlow的高级机器学习API—tf.contrib.learn的简介、使用方法、案例应用之详细攻略
TF学习--TF之API:TensorFlow的高级机器学习API-tf.contrib.learn的简介.使用方法.案例应用之详细攻略 目录 tf.contrib.learn的简介 tf.contr ...
- 面向对象(类的概念,属性,方法,属性的声明,面向对象编程思维
1 面向对象 1.1 你是如何认识新事物的? 从过往的事物中总结事物的特点(特征),并比对新事物,把新事物进行归类. 1.2 类(Class)的概念(A) 类是对一组具有相同特征和行为的对象的抽象描述 ...
- MegaSAS RAID卡 BBU Learn Cycle周期的影响
背景 最近遇到有些带MegaSAS RAID卡的服务器,在业务高峰时突然IO负载飚升得很高,IO性能急剧下降,查了日志及各种设置最后才发现是RAID卡的Cache写策略由WriteBack变成Writ ...
- Causal Inference
文章目录 Standardization 非参数情况 Censoring 参数模型 Time-varying 静态 IP weighting 无参数 Censoring 参数模型 censoring ...
- 论文浅尝 | 一日看尽长安花--NLP可解释研究梳理
本文是对TACL2019<Analysis Methods in Neural Language Processing: A Survey>的翻译和整理. 本文转载自知乎,文章链接:htt ...
- 图神经网络的解释性综述!
↑↑↑关注后"星标"Datawhale每日干货 & 每月组队学习,不错过Datawhale干货 来源:纪厚业,北京邮电大学,图与推荐 编辑:数据派THU本文约1.5w字,干 ...
- Day7 面向对象和类的介绍
面向对象讲解: ''' 面向过程: 核心是过程二字,过程指的是问题的解决步骤,基于过程去设计程序,就好比在设计一条流水线,是一种机械式的思维方式. 优点:复杂的问题流程化,进而简单化 缺点:可扩展性差 ...
- 论文推荐:ReLICv2 ,新的自监督学习能否在ResNet 上超越监督学习?
来源:DeepHub IMBA 本文约2500字,建议阅读5分钟 自监督 ResNets 能否在 ImageNet 上没有标签的情况下超越监督学习? 在本文中将介绍最近一篇推动自监督学习状态向前发展的 ...
最新文章
- [转]笑死人的考试填空
- redis 的一主二从三哨兵模式
- C# 结构体 简明介绍
- 与用户登录shell相关的文件/etc/profile,~/bashrc等浅析
- hdu 1198 Farm Irrigation
- Linux系统学习 八、SSH服务—SSH远程管理服务
- Docker学习二:Docker镜像与容器
- 2015-01-11 在SQL2008创建一个数据库
- PMP杂谈--配置管理系统和变更控制系统
- OTSU算法(大津法—最大类间方差法)原理及实现
- Elasticsearch 特定场景下使用
- 大一计算机课程学什么,大一新生应该如何学习 主要学什么课程
- 基本流水线与记分牌算法和Tomasulo算法
- 解决Mysql 主从或主主报1032错误
- 新能源充电桩主板二代新上市,迎来充电桩产业新一轮发展
- SSL 1231 容易的网络游戏
- flex布局实现叠在另一个div之上_flex布局
- IT 安防生意不好做,我被赶出了电子卖场
- 学习Ajax框架之dojo:第六节——dojo类的声明和继承(附源代码)
- 电感啸叫的成因与解决方法
热门文章
- FRDM-KW36入门学习(二、运行heart_rate_sensor工程)
- 关于QQBot 和go-cqhttp机器人安装教程
- php生成超链接完整代码_PHP 超链接抓取的实现代码
- Linux下wordpress安装教程(全)
- 看我如何在赛门铁克邮件安全网关上实现弱口令到RCE漏洞执行
- 2017计算机组装入门,组装电脑入门攻略:装机之家带你了解DIY硬件知识
- wordpress 插件_适用于您的网站的2015年顶级WordPress安全插件
- Android投屏帧率码率
- 移动超级sim卡 无法下载卡_四川移动开售5G超级SIM卡 与小米手机组“超米CP”
- Java名称字符串进行星号处理