GraphicalLassoCV#
- class sklearn.covariance.GraphicalLassoCV(*, alphas=4, n_refinements=4, cv=None, tol=0.0001, enet_tol=0.0001, max_iter=100, mode='cd', n_jobs=None, verbose=False, eps=np.float64(2.220446049250313e-16), assume_centered=False)#
稀疏逆协方差与交叉验证选择的l1惩罚。
请参阅术语表条目:cross-validation estimator 。
更多信息请参阅:User Guide 。
Changed in version v0.20: GraphLassoCV已重命名为GraphicalLassoCV
- Parameters:
- alphasint或形状为(n_alphas,)的数组类型,dtype=float,默认=4
如果给定一个整数,它固定了要使用的alpha网格上的点数。如果给定一个列表,它给出了要使用的网格。有关更多详细信息,请参见类文档字符串中的注释。范围是[1, inf)对于一个整数。范围是(0, inf]对于一个浮点数数组类型。
- n_refinementsint,默认=4
网格细化的次数。如果传递了alphas的显式值,则不使用。范围是[1, inf)。
- cvint, 交叉验证生成器或可迭代对象,默认=None
确定交叉验证分割策略。 cv的可能输入包括:
None,使用默认的5折交叉验证,
整数,指定折数。
一个可迭代对象,生成(train, test)索引数组对。
对于整数/None输入,使用:class:
~sklearn.model_selection.KFold
。请参阅:ref:
User Guide <cross_validation>
以了解可以在此处使用的各种交叉验证策略。Changed in version 0.20:
cv
默认值如果为None,从3折改为5折。- tolfloat,默认=1e-4
声明收敛的容忍度:如果对偶间隙低于此值,迭代将停止。范围是(0, inf]。
- enet_tolfloat,默认=1e-4
用于计算下降方向的弹性网络求解器的容忍度。此参数控制给定列更新的搜索方向的精度,而不是整体参数估计的精度。仅在mode=’cd’时使用。范围是(0, inf]。
- max_iterint,默认=100
最大迭代次数。
- mode{‘cd’, ‘lars’},默认=’cd’
使用的Lasso求解器:坐标下降或LARS。对于非常稀疏的底层图,其中特征数量大于样本数量时使用LARS。否则首选cd,它在数值上更稳定。
- n_jobsint,默认=None
并行运行的作业数。
None
表示1,除非在:obj:joblib.parallel_backend
上下文中。-1
表示使用所有处理器。请参阅:term:Glossary <n_jobs>
以获取更多详细信息。Changed in version v0.20:
n_jobs
默认值从1改为None- verbosebool,默认=False
如果verbose为True,则在每次迭代时打印目标函数和对偶间隙。
- epsfloat,默认=eps
在计算Cholesky对角因子时,机器精度正则化。对于非常病态的系统,增加此值。默认是
np.finfo(np.float64).eps
。Added in version 1.3.
- assume_centeredbool,默认=False
如果为True,则在计算前不中心化数据。 当数据均值几乎为零但不是完全为零时,这很有用。 如果为False,则在计算前中心化数据。
- Attributes:
- location_形状为(n_features,)的ndarray
估计的位置,即估计的均值。
- covariance_形状为(n_features, n_features)的ndarray
估计的协方差矩阵。
- precision_形状为(n_features, n_features)的ndarray
估计的精度矩阵(逆协方差)。
- costs_(objective, dual_gap)对的列表
每次迭代时的目标函数和对偶间隙的列表。仅当return_costs为True时返回。
Added in version 1.3.
- alpha_float
选择的惩罚参数。
- cv_results_ndarrays的字典
一个包含以下键的字典:
- alphas形状为(n_alphas,)的ndarray
探索的所有惩罚参数。
- split(k)_test_score形状为(n_alphas,)的ndarray
第(k)折的留出数据的对数似然得分。
Added in version 1.0.
- mean_test_score形状为(n_alphas,)的ndarray
折数的平均得分。
Added in version 1.0.
- std_test_score形状为(n_alphas,)的ndarray
折数的标准差得分。
Added in version 1.0.
- n_iter_int
为最佳alpha运行的迭代次数。
- n_features_in_int
在:term:
fit
期间看到的特征数量。Added in version 0.24.
- feature_names_in_形状为(
n_features_in_
,)的ndarray 在:term:
fit
期间看到的特征名称。仅当X
的特征名称均为字符串时定义。Added in version 1.0.
See also
graphical_lasso
L1惩罚的协方差估计器。
GraphicalLasso
稀疏逆协方差估计 使用l1惩罚估计器。
Notes
寻找最佳惩罚参数(
alpha
)是通过在迭代细化的网格上进行的:首先在网格上计算交叉验证得分,然后在最大值周围进行新的细化网格,依此类推。这里面临的一个挑战是求解器可能无法收敛到一个条件良好的估计。相应的
alpha
值然后作为缺失值出现,但最优值可能接近这些缺失值。在
fit
中,一旦通过交叉验证找到最佳参数alpha
,模型将使用整个训练集重新拟合。Examples
>>> import numpy as np >>> from sklearn.covariance import GraphicalLassoCV >>> 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 = GraphicalLassoCV().fit(X) >>> np.around(cov.covariance_, decimals=3) array([[0.816, 0.051, 0.22 , 0.017], [0.051, 0.364, 0.018, 0.036], [0.22 , 0.018, 0.322, 0.094], [0.017, 0.036, 0.094, 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
self
和comp_cov
协方差估计器之间的均方误差(以 Frobenius 范数为意义)。
- fit(X, y=None, **params)#
拟合GraphicalLasso协方差模型到X。
- Parameters:
- X形状为(n_samples, n_features)的类数组对象
从中计算协方差估计的数据。
- y忽略
未使用,为保持API一致性而存在。
- **paramsdict, 默认=None
要传递给CV分割器和cross_val_score函数的参数。
Added in version 1.5: 仅在
enable_metadata_routing=True
时可用, 可以通过使用sklearn.set_config(enable_metadata_routing=True)
来设置。 有关更多详细信息,请参阅:ref:Metadata Routing User Guide <metadata_routing>
。
- Returns:
- selfobject
返回实例本身。
- get_metadata_routing()#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
Added in version 1.5.
- Returns:
- routingMetadataRouter
一个封装了路由信息的
MetadataRouter
。
- 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$') GraphicalLassoCV #
Request metadata passed to the
score
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed toscore
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it toscore
.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 inscore
.
- Returns:
- selfobject
The updated object.