GraphicalLasso#

class sklearn.covariance.GraphicalLasso(alpha=0.01, *, mode='cd', covariance=None, tol=0.0001, enet_tol=0.0001, max_iter=100, verbose=False, eps=np.float64(2.220446049250313e-16), assume_centered=False)#

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

更多信息请参阅 用户指南

Changed in version v0.20: GraphLasso已重命名为GraphicalLasso

Parameters:
alphafloat, default=0.01

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

mode{‘cd’, ‘lars’}, default=’cd’

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

covariance“precomputed”, default=None

如果covariance是”precomputed”,则 fit 中的输入数据被假定为协方差矩阵。 如果为 None ,则从数据 X 估计经验协方差。

Added in version 1.3.

tolfloat, default=1e-4

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

enet_tolfloat, default=1e-4

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

max_iterint, default=100

最大迭代次数。

verbosebool, default=False

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

epsfloat, default=eps

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

Added in version 1.3.

assume_centeredbool, default=False

如果为True,则在计算前不对数据进行中心化。 当数据均值几乎但不是完全为零时,这很有用。 如果为False,则在计算前对数据进行中心化。

Attributes:
location_ndarray of shape (n_features,)

估计的位置,即估计的均值。

covariance_ndarray of shape (n_features, n_features)

估计的协方差矩阵

precision_ndarray of shape (n_features, n_features)

估计的伪逆矩阵。

n_iter_int

运行的迭代次数。

costs_list of (objective, dual_gap) pairs

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

Added in version 1.3.

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当 X 的特征名称均为字符串时定义。

Added in version 1.0.

See also

graphical_lasso

L1惩罚的协方差估计器。

GraphicalLassoCV

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

Examples

>>> import numpy as np
>>> from sklearn.covariance import GraphicalLasso
>>> true_cov = np.array([[0.8, 0.0, 0.2, 0.0],
...                      [0.0, 0.4, 0.0, 0.0],
...                      [0.2, 0.0, 0.3, 0.1],
...                      [0.0, 0.0, 0.1, 0.7]])
>>> np.random.seed(0)
>>> X = np.random.multivariate_normal(mean=[0, 0, 0, 0],
...                                   cov=true_cov,
...                                   size=200)
>>> cov = GraphicalLasso().fit(X)
>>> np.around(cov.covariance_, decimals=3)
array([[0.816, 0.049, 0.218, 0.019],
       [0.049, 0.364, 0.017, 0.034],
       [0.218, 0.017, 0.322, 0.093],
       [0.019, 0.034, 0.093, 0.69 ]])
>>> np.around(cov.location_, decimals=3)
array([0.073, 0.04 , 0.038, 0.143])
error_norm(comp_cov, norm='frobenius', scaling=True, squared=True)#

计算两个协方差估计器之间的均方误差。

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

要比较的协方差。

norm{“frobenius”, “spectral”}, 默认=”frobenius”

用于计算误差的范数类型。可用的误差类型: - ‘frobenius’ (默认): sqrt(tr(A^t.A)) - ‘spectral’: sqrt(max(eigenvalues(A^t.A)) 其中 A 是误差 (comp_cov - self.covariance_)

scalingbool, 默认=True

如果为 True(默认),平方误差范数除以 n_features。 如果为 False,平方误差范数不进行缩放。

squaredbool, 默认=True

是否计算平方误差范数或误差范数。 如果为 True(默认),返回平方误差范数。 如果为 False,返回误差范数。

Returns:
resultfloat

selfcomp_cov 协方差估计器之间的均方误差(以 Frobenius 范数为意义)。

fit(X, y=None)#

拟合GraphicalLasso模型到X。

Parameters:
X形状为(n_samples, n_features)的类数组对象

从中计算协方差估计的数据。

y忽略

未使用,为保持API一致性而存在。

Returns:
self对象

返回实例本身。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

get_precision()#

获取精度矩阵的方法。

Returns:
precision_array-like of shape (n_features, n_features)

与当前协方差对象相关的精度矩阵。

mahalanobis(X)#

计算给定观测值的马氏距离平方。

Parameters:
X形状为 (n_samples, n_features) 的类数组

我们计算其马氏距离的观测值。假设这些观测值是从与fit中使用的数据相同的分布中抽取的。

Returns:
dist形状为 (n_samples,) 的 ndarray

观测值的马氏距离平方。

score(X_test, y=None)#

计算在估计的高斯模型下 X_test 的对数似然。

高斯模型由其均值和协方差矩阵定义,分别由 self.location_self.covariance_ 表示。

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

我们计算其似然的测试数据,其中 n_samples 是样本数量, n_features 是特征数量。 X_test 假设是从与拟合中使用的数据相同的分布中抽取的(包括中心化)。

y忽略

未使用,为保持API一致性而存在。

Returns:
resfloat

self.location_self.covariance_ 分别为高斯模型均值和协方差矩阵估计量的 X_test 的对数似然。

set_params(**params)#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline )。后者具有形式为 <component>__<parameter> 的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_score_request(*, X_test: bool | None | str = '$UNCHANGED$') GraphicalLasso#

Request metadata passed to the score method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to score if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to score .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
X_teststr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for X_test parameter in score .

Returns:
selfobject

The updated object.