使用 BIC 分数或通用分数的 GES
算法介绍
用法
from causallearn.search.ScoreBased.GES import ges
# default parameters
Record = ges(X)
# or customized parameters
Record = ges(X, score_func, maxP, parameters)
# Visualization using pydot
from causallearn.utils.GraphUtils import GraphUtils
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import io
pyd = GraphUtils.to_pydot(Record['G'])
tmp_png = pyd.create_png(f="png")
fp = io.BytesIO(tmp_png)
img = mpimg.imread(fp, format='png')
plt.axis('off')
plt.imshow(img)
plt.show()
# or save the graph
pyd.write_png('simple_test.png')
推荐使用 pydot 进行可视化(用法示例)。如果需要特定的标签名称,请参考此用法示例(例如,GraphUtils.to_pydot(Record[‘G’], labels=[“A”, “B”, “C”]))。
参数
X: numpy.ndarray,形状 (n_samples, n_features)。数据,其中 n_samples 是样本数量,n_features 是特征数量。
- score_func: 您想要使用的评分函数,包括(参见 score_functions.)。默认值:‘local_score_BIC’。
“local_score_BIC”:BIC 分数 [3]。
“local_score_BDeu”:BDeu 分数 [4]。
“local_score_CV_general”:使用交叉验证的通用分数,适用于单维变量数据 [2]。
“local_score_marginal_general”:使用边际似然的通用分数,适用于单维变量数据 [2]。
“local_score_CV_multi”:使用交叉验证的通用分数,适用于多维变量数据 [2]。
“local_score_marginal_multi”:使用边际似然的通用分数,适用于多维变量数据 [2]。
maxP: 搜索图时允许的最大父节点数量。默认值:None。
- parameters: 使用 CV 似然时需要。默认值:None。
parameters[‘kfold’]: k 折交叉验证。
parameters[‘lambda’]: 正则化参数。
parameters[‘dlabel’]: 对于多维变量,指示哪些维度属于第 i 个变量。
返回值
Record[‘G’]: 学到的因果图,其中 Record[‘G’].graph[j,i]=1 且 Record[‘G’].graph[i,j]=-1 表示 i –> j;Record[‘G’].graph[i,j] = Record[‘G’].graph[j,i] = -1 表示 i — j。
Record[‘update1’]: 前向步骤中的每次更新(插入操作符)。
Record[‘update2’]: 后向步骤中的每次更新(删除操作符)。
Record[‘G_step1’]: 前向步骤中学到的图在每个步骤中的状态。
Record[‘G_step2’]: 后向步骤中学到的图在每个步骤中的状态。
Record[‘score’]: 学到的图的评分。