sklearn.covariance.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, assume_centered=False)
交叉验证选择L1惩罚时的稀疏逆方差。
有关交叉验证估计器,请参阅词汇表条目。
在用户指南中阅读更多内容。
v0.20版中已更改: GraphLassoCV已重命名为GraphicalLassoCV
参数 | 说明 |
---|---|
alphas | int or array-like of shape (n_alphas,), dtype=float, default=4 如果给定整数,它将固定alpha网格上要使用的点的数量。如果给出了列表,则给出要使用的网格。请参阅文档中的注释以了解更多细节。给定浮点值时,范围为(0,inf]。 |
n_refinements | int, default=4 网格细化的次数。如果传递了明确的alpha值,则不使用。范围是[1,inf)。 |
cv | int, cross-validation generator or iterable, default=None 确定交叉验证拆分策略。可能输入是: - 无,要使用默认的5倍交叉验证, - 整数,用于指定折叠数。 - CV分配器, - 分割为(训练、测试)像索引数组形式的可迭代对象。 对于整数/无输入,将使用 KFold 。有关可在此处使用的各种交叉验证策略,请参阅用户指南。 *在0.20版中更改:*如果 cv 设置为“无”,默认值从3倍更改为5倍。 |
tol | float, default=1e-4 声明收敛的容差:如果两次迭代结果的差值小于此值,则停止迭代。范围是(0,inf]。 |
enet_tol | float, default=1e-4 用于计算下降方向的弹性网求解器的容差。该参数控制给定列更新搜索方向的准确性,而不是整体参数估计的准确性。仅用于mode ='cd'。范围是(0,inf]。 |
max_iter | int, default=100 最大迭代次数。 |
mode | {‘cd’, ‘lars’}, default=’cd’ 设置lasso求解器:坐标下降(cd)或LARS。LARS用于特征数量大于样本数量的非常稀疏的情况。在数值更稳定的情况首先cd。 |
n_jobs | int, default=None 同时运行的进程数。如果 joblib.parallel_backend 中没有设置,None 意味使用1个进程。 -1 表示使用所有进程。有关更多详细信息,请参见词汇表。v0.20版中的更改: n_jobs 默认从1更改为None |
verbose | bool, default=False 如果verbose为True,则每次迭代都会打印目标函数和对偶间隙。 |
assume_centered | bool, default=False 如果为True,则在计算之前数据不会中心化。这在处理均值几乎为零但不完全为零的数据时很有用。如果为False,则在计算之前将数据进行中心化。 |
属性 | 说明 |
---|---|
location_ | ndarray of shape (n_features,) 估计位置,即估计平均值。 |
covariance_ | ndarray of shape (n_features, n_features) 估计的协方差矩阵。 |
precision_ | ndarray of shape (n_features, n_features) 估计的精度矩阵(逆协方差)。 |
alpha_ | float 惩罚参数 |
cv_alphas_ | list of shape (n_alphas,), dtype=float 探索的所有惩罚参数。 |
grid_scores_ | ndarray of shape (n_alphas, n_folds) 外部数据交叉验证的对数似然分数 |
n_iter_ | int 为获得最佳alpha值而运行的迭代次数。 |
另见
注
搜索最优惩罚参数(alpha)是在迭代细化的网格上进行的:首先计算网格上交叉验证的分数,然后以最大值为中心进行新的细化网格,以此类推。
这里面临的挑战之一是,求解器可能无法收敛到条件良好的估计。然后,达不到最优的alpha值,但是得到的最佳值可能接近这个最优值。
示例
>>> 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 (self, comp_cov[, norm, scaling, …]) |
计算两个协方差估计量之间的均方误差。 |
fit (self, X[, y]) |
使GraphicalLasso协方差模型拟合X。 |
get_params (self[, deep]) |
获取此估计器的参数。 |
get_precision (self) |
获取精确度矩阵。 |
mahalanobis (self, X) |
计算给定观测值的平方马氏距离。 |
score (self, X_test[, y]) |
使用self.covariance_ 计算高斯数据集的对数似然值,作为其协方差矩阵的估计量。 |
set_params (self, **params) |
设置此估算器的参数。 |
__init__(self, *, alphas=4, n_refinements=4, cv=None, tol=0.0001, enet_tol=0.0001, max_iter=100, mode='cd', n_jobs=None, verbose=False, assume_centered=False)
初始化self. 请参阅help(type(self))以获得准确的说明。
error_norm(self,comp_cov, norm='frobenius', scaling=True, squared=True)
计算两个协方差估计量之间的均方误差。(在Frobenius规范的意义上)。
参数 | 说明 |
---|---|
comp_cov | array-like of shape (n_features, n_features) 要比较的协方差。 |
norm | {“frobenius”, “spectral”}, default=”frobenius” 用于计算误差的规范类型,可用的误差类型: - ‘frobenius’ (default): - ‘spectral’: 这里的A是 (comp_cov - self.covariance_) 的误差 |
scaling | bool, default=True 如果为True(默认),则平方误差范数除以n_features。如果为False,则不会重新调整平方误差范数。 |
squared | bool, default=True 是计算平方误差范数还是误差范数。如果为True(默认),则返回平方误差范数。如果为False,则返回误差范数。 |
返回值 | 说明 |
---|---|
result | floatself 和comp_cov 协方差估计量之间的均方误差(按照Frobenius范式的含义) 。 |
fit(self,X,y = None )
拟合GraphicalLasso协方差模型。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) 用于计算协方差估计的数据 |
y | Ignored 未使用,出于API一致性目的而存在。 |
返回值 | 说明 |
---|---|
self | object |
get_params(self, deep=True)
获取此估计量的参数。
参数 | 说明 |
---|---|
deep | bool, default=True 如果为True,则将返回此估算器与其所包含子对象的参数。 |
返回值 | 说明 |
---|---|
params | mapping of string to any 参数名称映射到其值。 |
get_precision(self)
获取精确度矩阵。
返回值 | 说明 |
---|---|
precision_ | array-like of shape (n_features, n_features) 与当前协方差对象关联的精度矩阵。 |
mahalanobis(self, X)
计算给定观测值的平方马氏距离。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) 观测值,用来计算马氏距离。假定观测值与fit中使用的数据来自相同的分布。 |
返回值 | 说明 |
---|---|
dist | ndarray of shape (n_samples,) 观测值的平方马氏距离。 |
score(self, X_test, y=None)
使用self.covariance_
作为协方差矩阵的估计值来计算高斯数据集的对数似然 。
参数 | 说明 |
---|---|
X_test | array-like of shape (n_samples, n_features) 计算似然性的测试数据集,其中n_samples是样本数,n_features是特征数。假定X_test与拟合(包括中心化)使用的数据来自相同的分布。 |
y | Ignored 未使用,出于API一致性目的而存在。 |
返回值 | 说明 |
---|---|
res | float 数据集以 self.covariance_ 作为其协方差矩阵的估计量的似然性。 |
set_params(self, **params)
设置此估计器的参数。
该方法适用于简单的估计器以及嵌套对象(例如管道)。后者具有形式参数<component>__<parameter>
以便可以更新嵌套对象的每个组件。
参数 | 说明 |
---|---|
**params | dict 估算器参数。 |
返回值 | 参数 |
---|---|
self | object 估算器对象。 |