dowhy.causal_refuters.overrule.BCS 包#

子模块#

dowhy.causal_refuters.overrule.BCS.load_process_data_BCS 模块#

用于二值化特征的代码。

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

[1] Oberst, M., Johansson, F., Wei, D., Gao, T., Brat, G., Sontag, D., & Varshney, K. (2020). 观察研究中的重叠特征。在 S. Chiappa & R. Calandra (Eds.), 第二十三届国际人工智能与统计会议论文集 (Vol. 108, pp. 788–798). PMLR. https://arxiv.org/abs/1907.04138

class dowhy.causal_refuters.overrule.BCS.load_process_data_BCS.FeatureBinarizer(colCateg: List[str] = [], numThresh: int = 9, negations: bool = False, threshStr: bool = False, threshOverride: Dict = {}, **kwargs)[source]#

基础类:TransformerMixin

用于将分类和有序(包括连续)特征二值化的转换器。

请注意,在学习布尔规则之前,所有特征都被转换为二进制变量。

初始化用于二值化分类和有序(包括连续)特征的转换器

Parameters:
  • colCateg (List[str], optional) – 分类列的列表,默认为 [],'object' 数据类型自动被视为分类

  • numThresh (int, optional) – 用于二值化序数特征的分位数阈值数量,默认为9

  • negations (bool, optional) – 包含否定,默认为 False

  • threshStr (bool, optional) – 将阈值转换为字符串,默认为 False

  • threshOverride (Dict, optional) – 用于覆盖分位数阈值的字典,默认为{}, 格式为{colname : np.linspace object}以定义切割点

fit(X)[source]#

适应数据,包括在适当的情况下学习阈值。

设置以下内部变量: * maps = 一元/二元列的映射字典 * enc = 分类列的OneHotEncoders字典 * thresh = 有序列的阈值列表字典 * NaN = 包含NaN值的有序列列表

Parameters:

X (pd.DataFrame) – 原始特征作为Pandas数据框

transform(X: DataFrame) DataFrame[source]#

将数据转换为二进制特征。

Parameters:

X (pd.DataFrame) – 原始特征作为Pandas数据框

Return A:

二进制特征数据框

dowhy.causal_refuters.overrule.BCS.overlap_boolean_rule 模块#

重叠布尔规则。

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

[1] Oberst, M., Johansson, F., Wei, D., Gao, T., Brat, G., Sontag, D., & Varshney, K. (2020). 观察研究中的重叠特征。在 S. Chiappa & R. Calandra (Eds.), 第二十三届国际人工智能与统计会议论文集 (Vol. 108, pp. 788–798). PMLR. https://arxiv.org/abs/1907.04138

class dowhy.causal_refuters.overrule.BCS.overlap_boolean_rule.OverlapBooleanRule(alpha=0.95, lambda0=0.01, lambda1=0.01, K=20, D=20, B=10, iterMax=10, eps=1e-06, silent=False, verbose=False, solver='ECOS', rounding='greedy_sweep')[source]#

基础类:object

以scikit-learn风格的重叠布尔规则类

学习以析取范式描述的布尔规则来描述正类。

Parameters:
  • alpha (float, optional) – 确保包含在规则中的正样本比例,默认为 0.95

  • lambda0 (float, optional) – 规则数量的正则化,默认为 1e-2

  • lambda1 (float, optional) – 正则化项,针对字面量数量,默认值为 1e-2

  • K (int, optional) – 在束搜索期间返回的最大结果数,默认为20

  • D (int, 可选) – 每次束搜索迭代的最大额外规则数,默认为20

  • B (int, optional) – 光束搜索的宽度,默认为10

  • iterMax (int, 可选) – 列生成的最大迭代次数,默认为10

  • eps (float, optional) – 比较时的数值容差,默认为1e-6

  • silent (bool) – 静默非优化器输出,默认为 False

  • verbose (bool, optional) – 详细的优化器输出,默认为 False

  • solver (str, optional) – CVXPY 用于解决线性规划松弛的线性规划求解器,默认为‘ECOS’

  • rounding (str, optional) – 执行舍入的策略,可以是‘greedy’或‘greedy_sweep’,默认为‘greedy_sweep’

compute_conjunctions(X)[source]#

计算在self.z中指定的特征的连词

fit(X: DataFrame, y: ndarray | DataFrame)[source]#

将模型拟合到训练数据。

Parameters:
  • X – 包含协变量的Pandas DataFrame

  • y – +1 表示重叠/支持(取决于学习的规则),0 表示不重叠,-1 表示背景样本。对于重叠规则,应仅包含 (+1/0),对于学习支持规则,应包含 (+1/-1)。

get_objective_value(X, o, rounded=True)[来源]#
get_params()[source]#

返回估计器参数

greedy_round_(X: DataFrame, y: ndarray | DataFrame, xi: float = 0.5, use_lp: bool = False)[source]#

将规则系数四舍五入为整数值。

对于DNF,这从没有连接词开始,并根据成本贪婪地添加它们,该成本惩罚(任何)包含负样本,并奖励(新)包含正样本,直到它覆盖至少alpha比例的正样本。

Parameters:
  • X – 包含协变量的Pandas DataFrame

  • y – +1 表示重叠/支持(取决于学习的规则),0 表示 不重叠,-1 表示背景样本。 对于重叠规则,应仅包含 (+1/0), 或对于学习支持规则,应包含 (+1/-1)。

  • xi – 包含正样本的奖励,相对于包含负样本的成本(1)

  • use_lp – 限制为那些LP系数为正的合取式。请注意,LP无论如何都会产生影响,因为我们在这里只考虑通过列生成生成的规则。

predict(X)[source]#

预测点是否属于重叠区域

predict_(X, w)[source]#

预测点是否属于重叠区域

predict_rules(X)[source]#

预测点是否属于重叠区域

round_(X: DataFrame, y: ndarray | DataFrame, scoring: str = 'greedy', xi=None, use_lp: bool = True)[source]#

通过贪婪方法将规则系数四舍五入为整数值,可以使用固定奖励 (scoring=”greedy”) 或根据正负样本分类的平衡准确度优化包含正样本的奖励 (scoring=”greedy_sweep)。

Parameters:
  • X – 包含协变量的Pandas DataFrame

  • y – +1 表示重叠/支持(取决于学习的规则),0 表示 不重叠,-1 表示背景样本。 对于重叠规则,应仅包含 (+1/0), 或对于学习支持规则,应包含 (+1/-1)。

  • xi – 包含正样本的奖励,相对于包含负样本的成本(1)。对于scoring=”greedy”,应该是一个单一的值,或者对于scoring=”greedy_sweep”,应该是一个值的数组。对于后者,默认值为np.logspace(np.log10(0.01), 0.5, 20)

  • use_lp – 限制为那些LP系数为正的合取式。请注意,LP无论如何都会产生影响,因为我们在这里只考虑通过列生成生成的规则。

set_params(**params)[source]#

设置估计器参数

模块内容#