IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 解决cdt.causality.graph.GES()报错的问题 -> 正文阅读

[Python知识库]解决cdt.causality.graph.GES()报错的问题

????????最近在做因果推断的一些东西,在做因果图发现的时候无意中找到了cdt这个库,发现它集成了很多因果推断相关的算法,打算学习一下。在装好这个库之后(pip install cdt),跑了一下官网里的demo,在跑到model=cdt.causality.graph.GES()这一句的时候出现了一些问题,最后发现和R语言的依赖有关系,费了不少劲才解决,在这里记录一下。

????????首先,直接跑demo的话会报错:

demo.py:

import cdt
import networkx as nx
import matplotlib.pyplot as plt

if __name__ == '__main__':

    data, graph = cdt.data.load_dataset('sachs')
    print(data.head())

    glasso = cdt.independence.graph.Glasso()

    skeleton = glasso.predict(data)
    new_skeleton = cdt.utils.graph.remove_indirect_links(skeleton, alg='aracne')

    model = cdt.causality.graph.GES()
    output_graph = model.predict(data, new_skeleton)

报错信息如下:

这个报错信息很模糊,我初步判断是找不到R的相关依赖,在网上找到了这篇博客https://blog.csdn.net/qq_41365630/article/details/115186063,它是通过直接修改Lib\site-packages\cdt\utils\Settings.py文件来设置与Rscript.exe的链接的,我这里通过在demo的最前面添加一句

cdt.SETTINGS.rpath = 'C:/Program Files/R/R-3.6.2/bin/Rscript.exe'

来得到同样的效果,其中rpath改成自己电脑上装的位置?。

加上这句之后,再次跑demo文件,报错信息有变化,提示我找不到“pcalg”这个包

我尝试直接打开RStudio,install.packages("pcalg"),结果提示我缺少graph和RBGL两个包,并且这两个包也无法直接通过install.packages的方式进行安装,因此我想通过bioconductor这个网站直接下载这两个包的源文件手动安装(bioconductor和CRAN是两个最常用的R依赖包下载网址,但是graph我在CRAN里没找到)

然而当我进了bioconductor尝试直接下载的时候,点了下载链接没反应。。。于是我又在网上找了另一篇博客(很遗憾链接我现在找不到了),在Rstudio里先后运行了以下代码:

if (!requireNamespace("BiocManager", quietly = TRUE))
+     install.packages("BiocManager")
BiocManager::install("graph")

?成功将graph包安装好

然后再运行

install.packages("RBGL")

将RBGL包也装好

最后直接运行

install.packages("pcalg")

成功将pcalg包装好了!!!

最后,再次运行demo文件,不再报错,问题解决!

最后的demo.py

import cdt
import networkx as nx
import matplotlib.pyplot as plt

if __name__ == '__main__':
    cdt.SETTINGS.rpath = 'C:/Program Files/R/R-3.6.2/bin/Rscript.exe'
    data, graph = cdt.data.load_dataset('sachs')
    print(data.head())

    glasso = cdt.independence.graph.Glasso()

    skeleton = glasso.predict(data)
    new_skeleton = cdt.utils.graph.remove_indirect_links(skeleton, alg='aracne')

    model = cdt.causality.graph.GES()
    output_graph = model.predict(data, new_skeleton)

    nx.draw_networkx(output_graph)
    plt.show()

(其中我加了output_graph的可视化,结果是下面这样的)

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:19:16  更:2021-09-02 11:21:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:59:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码