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)[source]#
L1 惩罚协方差估计器。
在用户指南中阅读更多内容。
v0.20 版本中的变化: graph_lasso 已更名为 graphical_lasso
- 参数:
- emp_cov形状为 (n_features, n_features) 的类数组
用于计算协方差估计的经验协方差。
- alpha浮点数
正则化参数:alpha 越高,正则化越强,逆协方差越稀疏。范围为 (0, inf]。
- mode{'cd', 'lars'},默认为 'cd'
要使用的 Lasso 求解器:坐标下降 (coordinate descent) 或 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
是否返回迭代次数。
- 返回:
- covariance形状为 (n_features, n_features) 的 ndarray
估计的协方差矩阵。
- precision形状为 (n_features, n_features) 的 ndarray
估计的(稀疏)精度矩阵。
- costs(目标函数,对偶间隙)对的列表
每次迭代的目标函数和对偶间隙值列表。仅当 return_costs 为 True 时返回。
- n_iter整数
迭代次数。仅当
return_n_iter
设置为 True 时返回。
另请参阅
GraphicalLasso
使用 L1 惩罚估计器进行稀疏逆协方差估计。
GraphicalLassoCV
带有交叉验证 L1 惩罚选择的稀疏逆协方差。
注释
用于解决此问题的算法是 GLasso 算法,来自 Friedman 2008 Biostatistics 论文。它与 R
glasso
包中的算法相同。与
glasso
R 包的一个可能区别是,对角线系数没有受到惩罚。示例
>>> 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.687, 0.212, -0.209], [ 0.212, 0.221, -0.0817], [-0.209, -0.0817, 0.232]])