文章目录

  • 一、前言
  • 二、内容
    • 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基本使用方法相关推荐

  1. Java learn lambda的方法引用

    lambda 的方法引用 实质也是建立在把引用方法的代码段简写成lambda表达式 分为以下几种: 1.引用静态方法 首先得有个静态方法 写成静态方法是因为 main主方法用类名调用时只会调用静态方法 ...

  2. TF学习——TF之API:TensorFlow的高级机器学习API—tf.contrib.learn的简介、使用方法、案例应用之详细攻略

    TF学习--TF之API:TensorFlow的高级机器学习API-tf.contrib.learn的简介.使用方法.案例应用之详细攻略 目录 tf.contrib.learn的简介 tf.contr ...

  3. 面向对象(类的概念,属性,方法,属性的声明,面向对象编程思维

    1 面向对象 1.1 你是如何认识新事物的? 从过往的事物中总结事物的特点(特征),并比对新事物,把新事物进行归类. 1.2 类(Class)的概念(A) 类是对一组具有相同特征和行为的对象的抽象描述 ...

  4. MegaSAS RAID卡 BBU Learn Cycle周期的影响

    背景 最近遇到有些带MegaSAS RAID卡的服务器,在业务高峰时突然IO负载飚升得很高,IO性能急剧下降,查了日志及各种设置最后才发现是RAID卡的Cache写策略由WriteBack变成Writ ...

  5. Causal Inference

    文章目录 Standardization 非参数情况 Censoring 参数模型 Time-varying 静态 IP weighting 无参数 Censoring 参数模型 censoring ...

  6. 论文浅尝 | 一日看尽长安花--NLP可解释研究梳理

    本文是对TACL2019<Analysis Methods in Neural Language Processing: A Survey>的翻译和整理. 本文转载自知乎,文章链接:htt ...

  7. 图神经网络的解释性综述!

    ↑↑↑关注后"星标"Datawhale每日干货 & 每月组队学习,不错过Datawhale干货 来源:纪厚业,北京邮电大学,图与推荐 编辑:数据派THU本文约1.5w字,干 ...

  8. Day7 面向对象和类的介绍

    面向对象讲解: ''' 面向过程: 核心是过程二字,过程指的是问题的解决步骤,基于过程去设计程序,就好比在设计一条流水线,是一种机械式的思维方式. 优点:复杂的问题流程化,进而简单化 缺点:可扩展性差 ...

  9. 论文推荐:ReLICv2 ,新的自监督学习能否在ResNet 上超越监督学习?

    来源:DeepHub IMBA 本文约2500字,建议阅读5分钟 自监督 ResNets 能否在 ImageNet 上没有标签的情况下超越监督学习? 在本文中将介绍最近一篇推动自监督学习状态向前发展的 ...

最新文章

  1. [转]笑死人的考试填空
  2. redis 的一主二从三哨兵模式
  3. C# 结构体 简明介绍
  4. 与用户登录shell相关的文件/etc/profile,~/bashrc等浅析
  5. hdu 1198 Farm Irrigation
  6. Linux系统学习 八、SSH服务—SSH远程管理服务
  7. Docker学习二:Docker镜像与容器
  8. 2015-01-11 在SQL2008创建一个数据库
  9. PMP杂谈--配置管理系统和变更控制系统
  10. OTSU算法(大津法—最大类间方差法)原理及实现
  11. Elasticsearch 特定场景下使用
  12. 大一计算机课程学什么,大一新生应该如何学习 主要学什么课程
  13. 基本流水线与记分牌算法和Tomasulo算法
  14. 解决Mysql 主从或主主报1032错误
  15. 新能源充电桩主板二代新上市,迎来充电桩产业新一轮发展
  16. SSL 1231 容易的网络游戏
  17. flex布局实现叠在另一个div之上_flex布局
  18. IT 安防生意不好做,我被赶出了电子卖场
  19. 学习Ajax框架之dojo:第六节——dojo类的声明和继承(附源代码)
  20. 电感啸叫的成因与解决方法

热门文章

  1. FRDM-KW36入门学习(二、运行heart_rate_sensor工程)
  2. 关于QQBot 和go-cqhttp机器人安装教程
  3. php生成超链接完整代码_PHP 超链接抓取的实现代码
  4. Linux下wordpress安装教程(全)
  5. 看我如何在赛门铁克邮件安全网关上实现弱口令到RCE漏洞执行
  6. 2017计算机组装入门,组装电脑入门攻略:装机之家带你了解DIY硬件知识
  7. wordpress 插件_适用于您的网站的2015年顶级WordPress安全插件
  8. Android投屏帧率码率
  9. 移动超级sim卡 无法下载卡_四川移动开售5G超级SIM卡 与小米手机组“超米CP”
  10. Java名称字符串进行星号处理