当前位置: 首页 > news >正文

【人工智能】因果推断与数据分析:用Python探索数据间的因果关系

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界

因果推断是数据科学领域的一个重要方向,旨在发现变量间的因果关系,而不仅仅是相关性。本篇文章将从因果推断的理论基础出发,介绍因果关系的定义与建模方法,涵盖因果图(Causal Graph)、d-分离、反事实估计等核心概念。我们使用Python实现因果推断工具(如DoWhy库)进行简单的数据分析,探讨因果关系的检验与验证。通过丰富的代码示例和详细的中文注释,本文将帮助读者深入理解因果推断的理论与应用,掌握其在实际问题中的实践方法。


目录

  1. 因果推断的理论基础
    • 什么是因果推断?
    • 因果推断与统计相关性的区别
    • 因果推断的三大问题
  2. 因果推断的核心概念
    • 因果图与d-分离
    • 反事实推断
    • Do-算子
  3. 因果推断的实现:Python工具库
    • 使用DoWhy库构建因果图
    • 数据准备与因果效应估计
  4. 案例分析:因果推断在实际问题中的应用
    • 案例1:广告投放对销售的因果效应
    • 案例2:药物治疗的因果效果评估
  5. 总结与未来展望

1. 因果推断的理论基础

1.1 什么是因果推断?

因果推断(Causal Inference)是一种分析方法,用于研究变量之间的因果关系,而非简单的相关性。例如,以下问题涉及因果推断:

  • 吸烟是否会导致肺癌?
  • 增加广告预算是否能提升销售额?

相关性并不代表因果性。例如:
相关性:   销售额 ∼ 广告投放 \text{相关性:}\, \text{销售额} \sim \text{广告投放} 相关性:销售额广告投放
因果性:   广告投放 → 销售额 \text{因果性:}\, \text{广告投放} \to \text{销售额} 因果性:广告投放销售额

1.2 因果推断与统计相关性的区别

  • 相关性:描述两个变量之间的统计关联,不考虑因果关系。
  • 因果性:需要说明一个变量(因)如何直接或间接影响另一个变量(果)。
示例:相关性不代表因果性
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt# 生成随机数据
np.random.seed(42)
ice_cream_sales = np.random.randint(50, 100, 100)
shark_attacks = np.random.randint(1, 10, 100)plt.scatter(ice_cream_sales, shark_attacks)
plt.xlabel(

相关文章:

【人工智能】因果推断与数据分析:用Python探索数据间的因果关系

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 因果推断是数据科学领域的一个重要方向,旨在发现变量间的因果关系,而不仅仅是相关性。本篇文章将从因果推断的理论基础出发,介绍因果关系的定义与建模方法,涵盖因果图(Causal Graph)、d-分离、反事实估计等…...

freeswitch(30秒自动挂断)

亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch场景说明: A和B接通通话时候,时间开始计算到达30秒后自动挂断使用方法 进入/usr/local/freeswitch/etc...

大模型呼入机器人有哪些功能特点?(转)

大模型呼入机器人有哪些功能特点?(转) 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 大模型呼入机器人,作为现代通信技术与人工智能深度融合的产物,正逐渐成为企业提升服务…...

网络工程师常用软件之配置对比软件

「24-配置比对软件-汉化WinMerge」 链接:https://pan.quark.cn/s/cef7541d62d1 ################################################################################ 我们经常在项目或者运维中对设备的config进行变更,那么我们如何快速的知道变更了什么…...

Linux之远程登录

一、使用ssh命令登录 winR打开cmd输入命令 # root是命令,192.168.101.200是地址 ssh root192.168.101.200是否要保存密码,就是yes以后可以免密登录,这里就yes了 输入密码,就登录成功了 操作完成之后,输入命令退出 e…...

#渗透测试#漏洞挖掘#红蓝攻防#js分析(上)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...

数智读书笔记系列006 协同进化:人类与机器融合的未来

书名:协同进化:人类与机器融合的未来 作者:[美]爱德华阿什福德李 译者:李杨 出版时间:2022-06-01 ISBN:9787521741476 中信出版集团制作发行 爱德华・阿什福德・李(Edward Ashford Lee)是一位在计算机科学与工程领域颇具影响力的学者&am…...

操作系统(7)处理机调度

前言 操作系统中的处理机调度是一个核心概念,它涉及如何从就绪队列中选择进程并将处理机分配给它以运行,从而实现进程的并发执行。 一、调度的层次 高级调度(作业调度): 调度对象:作业(包含程序…...

folly之侵入式链表

侵入式链表 侵入式链表(Intrusive Linked List)是一种数据结构,它的节点不是通过包含链表节点的对象来实现的(像非侵入式链表那样),而是通过在节点对象中直接包含指向其他节点的指针来实现的。这意味着链表节点对象本身需要被修改以包含指向链表其他部分的指针。 直接上…...

GPT-5 训练遇阻:预期目标难达成与交付延期的深度剖析

# GPT-5 训练遇阻:预期目标难达成与交付延期的深度剖析 近期,GPT-5 的训练进展引发了广泛关注与诸多讨论,令人遗憾的是,其训练并未达到预期目标,且难以在规定时间内交付。这一状况不仅让期待它的人们大感意外&#xf…...

C缺陷与陷阱 — 3 深入理解表达式

目录 1 表达式的运算次序 1.1 自增或自减操作符 1.2 函数参数 1.3 函数指针 1.4 函数调用 1.5 嵌套赋值语句 2 函数调用不作为函数参数 3 赋值语句的谨慎使用 1 表达式的运算次序 除了少数操作符(函数调用操作符 ( )、&&、| |、? : 和 ,&#xff…...

Linux常用指令-----中

Linux常用指令----上 Linux常用指令----下 Linux系列 文章目录 Linux系列前言一、man指令(重要)二、cp指令(重要)三、echo指令四、cat指令五、mv指令六、which指令七、alias指令总结 前言 接下来我们介绍的指令是承接上篇&#…...

k8s 部署方式kustomization和helm的区别

Kustomize 和 Helm 是 Kubernetes 中两种流行的配置管理工具,它们都用于管理 Kubernetes 资源,但它们的设计理念、功能和适用场景有所不同。以下是两者的详细对比: 1. 基本概念 Kustomize 功能:原生于 Kubernetes 的工具&#x…...

Alogrithm:骑士走棋盘

1. 说明 骑士旅游(Knights tour)在十八世纪初倍受数学家与拼图迷的注意,它什么时候被提出已不可考,骑士的走法为西洋棋的走法,骑士可以由任一个位置出发,它要如何走完所有的位置? 2. 解法 骑士旅…...

Oracle 与 达梦 数据库 对比

当尝试安装了达梦数据库后,发现达梦真的和Oracle数据库太像了,甚至很多语法都相同。 比如:Oracle登录数据库采用sqlplus,达梦采用disql。 比如查看数据视图:达梦和Oracle都有 v$instance、v$database、dba_users等&a…...

[COLM 2024] V-STaR: Training Verifiers for Self-Taught Reasoners

本文是对 STaR 的改进方法,COLM 是 Conference On Language Models,大模型领域新出的会议,在国际上很知名,不过目前还没有被列入 ccf list(新会议一般不会列入);作者来自高校、微软研究院和 Goo…...

【Python】使用Selenium的find_element模块获取网页上的大段文字和表格的方法(建议收藏!)

发现了一个使用Selenium的find_element模块,快速获取文字和表格的方法,很实在,以后爬网的时候,就不用beautifulSoup 和 pandas的read_html 混起来用了! 文字部分:实现网络节点下,某个节点下的其…...

蓝桥杯刷题——day4

蓝桥杯刷题——day4 题目一题干题目解析代码 题目二题干题目解析代码 题目一 题干 小蓝和朋友们在玩一个报数游戏。由于今年是2024 年,他们决定要从小到大轮流报出是20或24倍数的正整数。前10个被报出的数是:20,24,40,48,60,72,80,96,100,120。请问第2…...

内网是如何访问到互联网(H3C源NAT)

H3C设备NAPT配置 直接打开29篇的拓扑,之前都配置好了 「模拟器、工具合集」复制整段内容 链接:https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab7ulgil 现在是出口路由器可以直接访问61.128.1.1,下面的终端访问不了,需要做NAPT源…...

源码分析之Openlayers中的Zoom缩放控件

概述 放大或缩小是地图中最基本的功能,本文主要介绍分析 Openlayers 中Zoom缩放控件的源码实现。 源码分析 Zoom控件继承Control类,关于Control类,可以参考这篇文章源码分析之Openlayers中的控件篇Control基类介绍 如果直接实例化Zoom类&…...

在rocky linux 9.5上在线安装 docker

前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

JDK 17 序列化是怎么回事

如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

webpack面试题

面试题:webpack介绍和简单使用 一、webpack(模块化打包工具)1. webpack是把项目当作一个整体,通过给定的一个主文件,webpack将从这个主文件开始找到你项目当中的所有依赖文件,使用loaders来处理它们&#x…...