记录一下CausalDiscoveryToolbox的R包安装历程

2023-11-04

R的安装和配置文件的修改

使用python包CausalDiscoveryToolbox时,对R包是有依赖的,首先需要安装R,R完成安装后,修改CausalDiscoveryToolbox的配置文件,对于anaconda来说,配置文件为Lib\site-packages\cdt\utils目录下的Settings.py文件,

    def __init__(self):
        """Define here the default values of the parameters."""
        super(ConfigSettings, self).__init__()
        self.NJOBS = 8
        self.GPU = 0
        self.autoset_config = True
        self.verbose = False
        self.default_device = 'cpu'
        self.rpath = 'D:\\Program Files\\R\\R-4.3.1\\bin\\x64\\Rscript.exe'  #改这里,改成Rscript.exe的路径。

R的依赖包安装

R安装完成后,还需要安装依赖包,直接看报错的话,有一定迷惑性,以为只安装RCIT这个包就可以了。实际上从源码看,需要安装RCIT、pcalg、kpcalg这三个包:

        if not (RPackages.pcalg and RPackages.kpcalg and RPackages.RCIT):
            raise ImportError("R Package (k)pcalg/RCIT is not available. "
                              "RCIT has to be installed from "
                              "https://github.com/Diviyan-Kalainathan/RCIT")

RCIT的安装

RCIT的安装比较简单,直接按https://github.com/Diviyan-Kalainathan/RCIT上按步骤操作就可以了。

library(devtools)
install_github("Diviyan-Kalainathan/RCIT")
安完测一下:
library(RCIT)
RCIT(rnorm(1000),rnorm(1000),rnorm(1000))
RCoT(rnorm(1000),rnorm(1000),rnorm(1000))

如果没有devtools这个库的话,首先要安装好这个库:

install.packages("devtools")

pcalg、kpcalg的安装

这两个包安装前,首先需要安装他们的依赖包,直接安装会报错:

> install.packages("pcalg")
Warning: 没有'‘graph’, ‘RBGL’'这种相依关系

而’‘graph’, ‘RBGL’'这两个包不能直接安装,R3.5或更高版本要用BiocManager安装:

install.packages("BiocManager")
BiocManager::install("graph")
BiocManager::install("RBGL")

安装完这两个包后,就可以安装pcalg、kpcalg了:

install.packages("pcalg")
install.packages("kpcalg")

到这里,CausalDiscoveryToolbox的R依赖就都安装完了,代码也能正常跑了。对于R的新手,操作起来还是比较麻烦的。

import cdt
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
from cdt.causality.graph import PC
data = pd.read_csv('<http://www.causality.inf.ethz.ch/data/lucas0_train.csv>')

# Infer the causal diagram
pc_output = PC().create_graph_from_data(data)
# Visualize the diagram
nx.draw_networkx(pc_output)
plt.show()

在这里插入图片描述

一个报错的处理

代码逻辑大概如下:

obj = PC()
for cause in causes:
	obj.create_graph_from_data(tmp[['a', 'b', 'c', 'label']])

大概执行到第9个循环时,报错如下:

R Python Error Output 
-----------------------

[Errno 2] No such file or directory: 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\cdt_pc_38b36fd3-c895-40bb-a5fa-24d784fbf88e\\result.csv'
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
Input In [32], in <cell line: 1>()
----> 1 obj.create_graph_from_data(tmp[['is_offgrid', 'is_dl_weaksinr', 'is_overlapping', 'label']])

File D:\anaconda\lib\site-packages\cdt\causality\graph\PC.py:278, in PC.create_graph_from_data(self, data, **kwargs)
    275 self.arguments['{NJOBS}'] = str(self.njobs)
    276 self.arguments['{VERBOSE}'] = str(self.verbose).upper()
--> 278 results = self._run_pc(data, verbose=self.verbose)
    280 return nx.relabel_nodes(nx.DiGraph(results),
    281                         {idx: i for idx, i in enumerate(data.columns)})

File D:\anaconda\lib\site-packages\cdt\causality\graph\PC.py:315, in PC._run_pc(self, data, fixedEdges, fixedGaps, verbose)
    313 except Exception as e:
    314     rmtree(run_dir)
--> 315     raise e
    316 except KeyboardInterrupt:
    317     rmtree(run_dir)

File D:\anaconda\lib\site-packages\cdt\causality\graph\PC.py:310, in PC._run_pc(self, data, fixedEdges, fixedGaps, verbose)
    307     else:
    308         self.arguments['{E_EDGES}'] = 'FALSE'
--> 310     pc_result = launch_R_script(Path("{}/R_templates/pc.R".format(os.path.dirname(os.path.realpath(__file__)))),
    311                                 self.arguments, output_function=retrieve_result, verbose=verbose)
    312 # Cleanup
    313 except Exception as e:

File D:\anaconda\lib\site-packages\cdt\utils\R.py:221, in launch_R_script(template, arguments, output_function, verbose, debug)
    219     print("\nR Python Error Output \n-----------------------\n")
    220     print(e)
--> 221     raise RuntimeError("RProcessError \nR Process Error Output \n-----------------------\n" + str(err, "ISO-8859-1")) from None
    222 print("\nR Python Error Output \n-----------------------\n")
    223 print(e)

RuntimeError: RProcessError 
R Process Error Output 
-----------------------
Loading required package: momentchi2
Loading required package: MASS
Error in file(file, "rt") : cannot open the connection
Calls: read.csv -> read.table -> file
In addition: Warning message:
In file(file, "rt") :
  cannot open file 'C:\Users\ADMINI~1\AppData\Local\Temp\cdt_pc_38b36fd3-c895-40bb-a5fa-24d784fbf88e\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\data.csv': No such file or directory
Execution halted

报的是R的错误,找不开一个文件,网上搜了一下,基本没有解决方案,github上作者也没有答复,github链接,CSDN上有一个说是要重装的(这个安装步骤写的不错):因果发现工具 Causal Discovery Toolbox(cdt)安装指南

经过分析,发现只有在for循环里执行obj.create_graph_from_data时才报错,并且也是多个循环之后才报错,猜测可能是反复执行obj.create_graph_from_data有关,根据这个分析,修改了一下代码,每次都实例化一下,问题就解决了,哈哈~~


for cause in causes:
	obj = PC()
	obj.create_graph_from_data(tmp[['a', 'b', 'c', 'label']])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录一下CausalDiscoveryToolbox的R包安装历程 的相关文章

随机推荐

  • linux+网络根文件系统,Linux--根文件系统的挂载过程分析——转自网络

    前言 本篇文章以S3C6410公版的Linux BSP和U Boot来进行分析 文中所有提及的名词和数据都是以该环境为例 所有的代码流程也是以该环境为例来进行分析 哈哈 如果有不正确或者不完善的地方 欢迎前来拍砖留言或者发邮件到guopei
  • STM32通过ESP8266与云服务器的通信

    个人从局域网内调试ESP8266开始就碰了一堆壁 在此总结一下 希望可以帮到看到这篇文章的人 关键性细节问题详情请见第五部分 注 仅以STA模式为例 第一部分 描述 STM32通过ESP8266连接无线路由器访问阿里云服务器并实现透传 第二
  • 架构笔记一:基础架构

    一 架构的基础定义 1 1 宏观定义 架构定义 软件架构指软件系统的顶层结构 架构是顶层设计 框架是面向编程或配置的半成品 组件是从技术维度上的复用 模块是从业务维度上职责的划分 系统是相互协同可运行的实体 不存在 银弹 软件设计过程中 模
  • C# 把函数作为参数传入另一个函数

    C 把函数作为参数传入另一个函数 如果我们需要设计一个Compute函数 它是用来计算的 参数类型依次是int 函数 int 比如 Compute 2 Add 3 应该返回5 因为我们传入的是一个做加法的函数 Compute 2 Mul 3
  • C++ include guard

    参考 https www geeksforgeeks org include guards in c include guard 也叫 header guard macro guard file guard 它的作用就是防止头文件被重复包含
  • Windows Nginx 环境搭建安装配置详细教程 2020(最新)

    Windows Nginx 安装配置详细教程 2020 最新 文章导读 Nginx 下载 Nginx 安装 WIndows Nginx 环境搭建 Nginx 配置 Nginx 问题解决 Nginx 下载 nginx 1 19 0 Nginx
  • 如何计算网络号

    IP 地址的网络号和主机号是通过子网掩码来计算的 具体计算方法如下 例如 有一个C类地址为 192 9 200 13 其缺省的子网掩码为 255 255 255 0 IP 地址 192 9 200 13 转换为二进制 11000000 00
  • 猎豹CEO傅盛:ChatGPT将带来交互革命和生产力革命

    本文为混沌 一 思维创新嘉年华大课笔记第二篇 授课老师 傅盛 猎豹移动董事长兼CEO 猎户星空董事长 编辑丨混沌商业研究团队 一直以来 我认为创业是时代 机会和个人努力三者的结合 是有方法论的 通过不断地迭代才能够持续找到成功的路径 6年前
  • oracle全组件安装,Oracle text组件安装

    1 目标 在数据库中 安装Oracle Text组件 970473 1 MOS文档ID 2 组件相关视图 查询验证 查询DB中的组件 视图 USER REGISTRY 注册 COMP ID 组件标识 COMP NAME 组件名称 VERSI
  • 开源配置中心和注册中心: Nacos 限流最佳实践

    Nacos 限流最佳实践 Tomcat 限流 Nginx 限流 限制访问速率 限制并发连接数 黑名单 总结 作者 风卿 Nacos 社区 committer Nacos 限流最佳实践 Nacos自开源以来 版本迭代速度很快 已经发布了0 9
  • Lost connection to MySQL server during query很无语的错误原因以及解决办法

    前言 最近在写mysql实验 在配置审计环境 搞了好几天各种bug 今天总算发现问题了 万万没想到竟是授权的问题 泪emo 是这样的 我在数据库建了表 create database auditdb use auditdb create t
  • 在CMD命令行中切换到管理员权限模式

    1 打开CMD 2 输入 runas noprofile user Administrator cmd 3 输入Administrator账户的密码 必须设置密码 PS 可以不是Administrator账户 只要是具有管理员权限的账号都可
  • 《我所知道的软件测试自动化》—关键字驱动的过去和未来

    鉴于这个系列写的内容是希望帮助 大多数2 3年 工作经验 急切盼望提升自身能力的 tester找到捅破 测试自动化 窗户纸的办法 所以木有高深内容 高手们请直接飘过 呵呵 1 关键字驱动 的由来 说到 关键字驱动 和 测试自动化 就不能不提
  • AWS介绍(详细好理解)

    一 什么是云计算 像水 电 煤一样的使用IT资源 云计算 指按需交付的IT资源和应用程序 通过互联网使用 按使用量付费 按需使用 高弹性 超大规模 云计算已经成为新常态 二 什么是AWS AWS是亚马逊集团的一家提供云计算服务的公司 AWS
  • flex 布局 子元素不设置宽高,高度撑满父元素的问题

    在 flex 布局中 我们通过 align items 来控制元素在交叉轴上的对齐方式 它可能取5个值 flex start 交叉轴的起点对齐 flex end 交叉轴的终点对齐 center 交叉轴的中点对齐 baseline 项目的第一
  • 使用Python分析处理数据并用pyecharts进行可视化

    使用Python分析处理数据并用pyecharts进行可视化 一 数据文件 二 使用pyecharts进行可视化 1 各岗位占比饼图 2 各岗位平均起薪柱状图 3 各城市招聘量柱状图及平均薪资折线图组合 4 各城市岗位薪资分布热力图 5 数
  • 结构体与枚举类型

    欢迎来到C语言的世界 博客主页 卿云阁 欢迎关注 点赞 收藏 留言 本文由卿云阁原创 本阶段属于锻体阶段 希望各位仙友顺利完成突破 首发时间 2021年1月18日 希望可以和大家一起完成进阶之路 作者水平很有限 如果发现错误 请留言轰炸哦
  • [转]QNX与Linux_OS系统对比比较:车载安全与移动博弈

    锋影 email 174176320 qq com 如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 无人驾驶汽车是汽车界的 目标 而这个 目标的实现离不开车载操作系统的完善 智能科技潮以强
  • 深度学习中Batch Size的大小对训练过程的影响

    最近在调参 看了一下batch size这个参数的意义以及对训练过程的影响 故记录一下自己学习到的内容 batch size大小的直接影响很明显 影响一个epoch中需要迭代iteration的次数以及完成每个epoch所需的时间 从训练的
  • 记录一下CausalDiscoveryToolbox的R包安装历程

    R的安装和配置文件的修改 使用python包CausalDiscoveryToolbox时 对R包是有依赖的 首先需要安装R R完成安装后 修改CausalDiscoveryToolbox的配置文件 对于anaconda来说 配置文件为Li