BOSS
算法介绍
最佳排序评分搜索 (BOSS) 算法 [1]。
使用方法
from causallearn.search.PermutationBased.BOSS import boss
# default parameters
G = boss(X)
# or customized parameters
G = boss(X, score_func, 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(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()
推荐使用 pydot 进行可视化(使用示例)。如果需要特定的标签名称,请参考此使用示例(例如,GraphUtils.to_pydot(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]。
- parameters: 使用 CV 似然时需要。默认值:None。
parameters[‘kfold’]:k 折交叉验证。
parameters[‘lambda’]:正则化参数。
parameters[‘dlabel’]:对于多维变量,指示哪些维度属于第 i 个变量。
返回值
G: 学习到的通用图,其中 G.graph[j,i]=1 且 G.graph[i,j]=-1 表示 i –> j;G.graph[i,j] = G.graph[j,i] = -1 表示 i — j。