graphical_lasso#

sklearn.covariance.graphical_lasso(emp_cov, alpha, *, mode='cd', tol=0.0001, enet_tol=0.0001, max_iter=100, verbose=False, return_costs=False, eps=np.float64(2.220446049250313e-16), return_n_iter=False)#

L1-惩罚协方差估计器。

更多信息请参阅 用户指南

Changed in version v0.20: graph_lasso 已重命名为 graphical_lasso

Parameters:
emp_cov类数组,形状为 (n_features, n_features)

从中计算协方差估计的经验协方差。

alpha浮点数

正则化参数:alpha 越高,正则化越强,逆协方差越稀疏。 范围是 (0, inf]。

mode{‘cd’, ‘lars’},默认=’cd’

使用的 Lasso 求解器:坐标下降或 LARS。对于非常稀疏的底层图,其中 p > n,使用 LARS。 否则,首选 cd,它在数值上更稳定。

tol浮点数,默认=1e-4

声明收敛的容忍度:如果对偶间隙低于此值,则停止迭代。范围是 (0, inf]。

enet_tol浮点数,默认=1e-4

用于计算下降方向的弹性网络求解器的容忍度。此参数控制给定列更新的搜索方向的精度, 而不是整体参数估计的精度。仅在 mode=’cd’ 时使用。范围是 (0, inf]。

max_iter整数,默认=100

最大迭代次数。

verbose布尔值,默认=False

如果 verbose 为 True,则在每次迭代时打印目标函数和对偶间隙。

return_costs布尔值,默认=False

如果 return_costs 为 True,则在每次迭代时返回目标函数和对偶间隙。

eps浮点数,默认=eps

在计算 Cholesky 对角因子时使用的机器精度正则化。对于非常病态的系统,增加此值。 默认是 np.finfo(np.float64).eps

return_n_iter布尔值,默认=False

是否返回迭代次数。

Returns:
covariancendarray,形状为 (n_features, n_features)

估计的协方差矩阵。

precisionndarray,形状为 (n_features, n_features)

估计的(稀疏)精度矩阵。

costs(objective, dual_gap) 对的列表

每次迭代时的目标函数和对偶间隙的列表。仅在 return_costs 为 True 时返回。

n_iter整数

迭代次数。仅在 return_n_iter 设置为 True 时返回。

See also

GraphicalLasso

使用 l1-惩罚估计器的稀疏逆协方差估计。

GraphicalLassoCV

带有 l1 惩罚交叉验证选择的稀疏逆协方差。

Notes

用于解决此问题的算法是 Friedman 2008 年 Biostatistics 论文中的 GLasso 算法。 它与 R glasso 包中的算法相同。

与 R glasso 包的一个可能区别是,对角系数未被惩罚。

Examples

>>> import numpy as np
>>> from sklearn.datasets import make_sparse_spd_matrix
>>> from sklearn.covariance import empirical_covariance, graphical_lasso
>>> true_cov = make_sparse_spd_matrix(n_dim=3,random_state=42)
>>> rng = np.random.RandomState(42)
>>> X = rng.multivariate_normal(mean=np.zeros(3), cov=true_cov, size=3)
>>> emp_cov = empirical_covariance(X, assume_centered=True)
>>> emp_cov, _ = graphical_lasso(emp_cov, alpha=0.05)
>>> emp_cov
array([[ 1.68...,  0.21..., -0.20...],
       [ 0.21...,  0.22..., -0.08...],
       [-0.20..., -0.08...,  0.23...]])