dowhy.causal_refuters.overrule 包#

子包#

子模块#

dowhy.causal_refuters.overrule.ruleset 模块#

OverRule 的规则集估计器类。

此模块实现了来自 OverRule [1] 的布尔规则集估计器。代码改编自(并进行了一些简化)clinicalml/overlap-code,使用 MIT 许可证。

[1] Oberst, M., Johansson, F., Wei, D., Gao, T., Brat, G., Sontag, D., & Varshney, K. (2020). Characterization of Overlap in Observational Studies. 载于 S. Chiappa & R. Calandra (编), 第二十三届人工智能与统计学国际会议论文集 (第 108 卷, 页码 788–798). PMLR. https://arxiv.org/abs/1907.04138

class dowhy.causal_refuters.overrule.ruleset.BCSRulesetEstimator(n_ref_multiplier: float = 1.0, lambda0: float = 0.0, lambda1: float = 0.0, cat_cols: List | None = None, negations: bool = True, num_thresh: int = 9, seed: int | None = None, ref_range: Dict[str, Dict] | None = None, thresh_override: Dict | None = None, **kwargs)[source]#

基类: object

基于带列生成的布尔规则的规则集估计器。

按照 scikit-learn 接口操作,并带有一些附加方法。

初始化估计器。

**kwargs 被传递给 OverlapBooleanRule (参数描述见 ./BCS/overlap_boolean_rule.py)

参数:
  • n_ref_multiplier (float, optional) – 参考样本计数乘数,仅用于估计支持度,默认为 1.0,但对于 Overlap 规则应设置为零

  • lambda0 (float, optional) – 规则数量的正则化,默认为 0.0

  • lambda1 (float, optional) – 文字数量的正则化,默认为 0.0

  • cat_cols (Optional[List], optional) – 分类列集合,默认为 None

  • negations (bool, optional) – 包含文字的否定,默认为 True

  • num_thresh (int, optional) – 用于离散化连续变量的 bin 数量,默认为 9(用于十分位数)

  • seed (int, optional) – 参考样本的随机种子,仅用于估计支持度,默认为 None

  • ref_range (Optional[Dict], optional) – 手动覆盖参考样本的范围,以字典形式给出,格式为 ref_range = {c: {“is_binary”: True/False, “min”: min_value, “max”: max_value}}

  • thresh_override (Optional[Dict], optional) – 手动覆盖连续特征的阈值,以如下字典形式给出,仅适用于唯一值多于 num_thresh 的连续特征 thresh_override = {column_name: np.linspace(0, 100, 10)}

fit(x, o=None)[source]#

拟合规则以表征支持度(如果未提供 O)或表征重叠度,后一种情况下 O 应是一个向量,用 1 表示重叠,用 0 表示非重叠。

此函数主要是 OverlapBooleanRule 估计器的包装器,确保特征在输入规则集估计器之前被二值化,构建用于支持度表征的参考样本等。

参数:
  • x (Pandas DataFrame or Numpy Array, shape (n, d)) – 协变量样本

  • o (Pandas DataFrame or Numpy Array, shape (n, )) – 指示样本是否属于重叠区域的二元指标,默认为 None。如果提供,应与 x 长度相同

get_params(deep=False)[source]#

返回估计器参数

init_estimator_()[source]#

初始化规则集估计器和特征二值化器。

predict(x)[source]#

预测 X 是否位于重叠区域(1 = True)。

参数:

x (Pandas DataFrame or Numpy Array, shape (n, d)) – 协变量样本

predict_rules(x)[source]#

预测被 x 激活的规则

参数:

x (Pandas DataFrame or Numpy Array, shape (n, d)) – 协变量样本

返回:

具有二元值的矩阵,形状为 (n, r),其中 r 是估计器考虑的规则总数,1 表示样本匹配该规则,0 表示不匹配。

返回类型:

Numpy Array, 形状 (n, r)

rules(as_str: bool = False, transform: Callable[[str, float], float] | None = None, fmt: str = '%.3f', labels: Dict[str, str] = {})[source]#

返回估计器学习到的规则。

参数:
  • as_str (bool, optional) – 如果为 True,返回字符串,否则返回字典,默认为 False

  • transform (Optional[Callable[[str, float], float]], optional) – 一个函数,接受规则和阈值的键值对并转换值。此函数用于重新缩放标准化数据,默认为 None

  • fmt (str, optional) – 浮点数的格式字符串,用于打印带阈值的规则,默认为 “%.3f”

  • labels (Dict[str, str], optional) – 将原始特征名称映射到打印规则时显示名称的字典,此处未指定的任何特征将默认为原始名称,默认为 {}

set_params(**params)[source]#

设置估计器参数

dowhy.causal_refuters.overrule.utils 模块#

学习布尔规则的工具函数集。

此模块实现了来自 OverRule [1] 的布尔规则集估计器。代码改编自(并进行了一些简化)clinicalml/overlap-code,使用 MIT 许可证。

[1] Oberst, M., Johansson, F., Wei, D., Gao, T., Brat, G., Sontag, D., & Varshney, K. (2020). Characterization of Overlap in Observational Studies. 载于 S. Chiappa & R. Calandra (编), 第二十三届人工智能与统计学国际会议论文集 (第 108 卷, 页码 788–798). PMLR. https://arxiv.org/abs/1907.04138

dowhy.causal_refuters.overrule.utils.fatom(f: str, o: str, v: str | float | None, fmt: str = '%.3f') str[source]#

格式化一个“原子”,即布尔规则中的单个文字。

参数:
  • f (str) – 特征名称

  • o (str) – 运算符,以下之一 [“<=”, “>”, “>=”, “<”, “==”, “not”, “”]

  • v (Optional[Union[str, float]]) – [“<=”, “>”, “>=”, “<”, “==”] 的比较值

  • fmt (str) – 浮点数的格式字符串,默认为 “%.3f”

返回:

格式化后的原子

返回类型:

str

dowhy.causal_refuters.overrule.utils.rule_str(C: List, fmt: str = '%.3f') str[source]#

将规则转换为字符串。

参数:
  • C (List) – 规则列表,其中每个元素是一个列表(单个规则),包含一组原子。

  • fmt (str) – 浮点数的格式字符串,默认为 “%.3f”

返回:

格式化后的规则

返回类型:

str

dowhy.causal_refuters.overrule.utils.sampleUnif(x, n: int = 10000, seed: int | None = None)[source]#

从样本 X 每列的最大值/最小值之间的均匀分布生成样本。

这些用于估计支持度,因为规则下的样本数量提供了体积的度量。此函数专门用于连续变量,而 sample_reference 处理一般情况,并在必要时调用此函数。

参数:
  • x (Pandas Dataframe or Numpy Array) – 2D 样本数组,其中每列对应一个特征。

  • n (int, optional) – int,默认为 10000

  • seed (int, optional) – 均匀采样的随机种子,默认为 None

dowhy.causal_refuters.overrule.utils.sample_reference(x, n: int | None = None, cat_cols: List[str] = [], seed: int | None = None, ref_range: Dict | None = None)[source]#

从 X 的列上的均匀分布生成样本。

参数:
  • x (Pandas Dataframe or Numpy Array) – 2D 样本数组,其中每列对应一个特征。

  • n (Optional[int], optional) – 要抽取的样本数量,默认为提供的样本数量。

  • cat_cols (List[str], optional) – 分类列集合,默认为 None

  • seed (int, optional) – 均匀采样的随机种子,默认为 None

  • ref_range (Optional[Dict], optional) – 手动覆盖参考样本的范围,以字典形式给出,格式为 ref_range = {c: {“is_binary”: True/False, “min”: min_value, “max”: max_value}}

模块内容#