skbio.stats.composition.sbp_basis

skbio.stats.composition.sbp_basis(sbp)[源代码]

状态:0.5.5版本的试验性版本。从顺序二进制划分(SBP)构建正交基。如中所述 [1], SBP是组成部件的二进制划分的分层集合。子组被再次划分,直到所有组包含单个部分。SBP可以编码为 \((D - 1) \times D\) 矩阵,其中,对于每一行,零件可以按-1和+1标记分组,0表示排除的零件。这个 sbp_basis 方法最初派生自函数 gsi.buildilrBase() 在R包中找到 compositions [2]. 第i个余额计算如下

\[b_i = \sqrt{ \frac{r_i s_i}{r_i+s_i} } \ln \left( \frac{g(x_{r_i})}{g(x_{s_i})} \right)\]

哪里 \(b_i\) 第i个余额对应于SBP中的第i行, \(r_i\)\(s_i\) 和数量分别为 +1-1 SBP第i行中的标签及其位置 \(g(x) = (\prod\limits_{i=1}^{D} x_i)^{1/D}\) 是的几何平均值 \(x\)

参数:

sbp (np.array, int) -- 对比度矩阵,也称为顺序二进制划分,其中每一行表示两组特征之间的划分。标有标签的零件 +1 将对应于该特征位于给定行分区的分子中,该部分标记为 -1 对应于在该给定行分区的分母中的特征,并且 0 将对应于行分区中排除的特征。

返回:

Aitchison单形中的一个正交基

返回类型:

numpy.array

示例

>>> import numpy as np
>>> sbp = np.array([[1, 1,-1,-1,-1],
...                 [1,-1, 0, 0, 0],
...                 [0, 0, 1,-1,-1],
...                 [0, 0, 0, 1,-1]])
...
>>> sbp_basis(sbp)
array([[ 0.54772256,  0.54772256, -0.36514837, -0.36514837, -0.36514837],
       [ 0.70710678, -0.70710678,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.81649658, -0.40824829, -0.40824829],
       [ 0.        ,  0.        ,  0.        ,  0.70710678, -0.70710678]])

引用