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 懲罰估計器的稀疏逆共變異數估計。

有關使用範例,請參閱視覺化股票市場結構

使用者指南中閱讀更多內容。

在版本 v0.20 中變更:GraphLasso 已重新命名為 GraphicalLasso

參數:
alphafloat,預設值 = 0.01

正規化參數:alpha 越高,正規化程度越高,逆共變異數越稀疏。範圍是 (0, inf]。

mode{‘cd’, ‘lars’},預設值 = ‘cd’

要使用的 Lasso 求解器:座標下降法或 LARS。對於非常稀疏的底層圖(其中 p > n),請使用 LARS。其他情況下,首選 cd,因為它在數值上更穩定。

covariance“precomputed”,預設值 = None

如果 covariance 為 “precomputed”,則 fit 中的輸入資料會被假設為共變異數矩陣。如果為 None,則會從資料 X 估計經驗共變異數。

在版本 1.3 中新增。

tolfloat,預設值 = 1e-4

宣告收斂的容差:如果對偶間隙低於此值,則會停止迭代。範圍是 (0, inf]。

enet_tolfloat,預設值 = 1e-4

用於計算下降方向的彈性網路求解器的容差。此參數控制給定列更新的搜尋方向的準確性,而不是整體參數估計的準確性。僅用於 mode='cd'。範圍是 (0, inf]。

max_iterint,預設值 = 100

最大迭代次數。

verbosebool,預設值 = False

如果 verbose 為 True,則會在每次迭代時繪製目標函數和對偶間隙。

epsfloat,預設值 = eps

在計算 Cholesky 對角因子時的機器精度正規化。對於條件非常差的系統,請增加此值。預設值為 np.finfo(np.float64).eps

在版本 1.3 中新增。

assume_centeredbool,預設值 = False

如果為 True,則在計算前不會將資料置中。當處理平均值幾乎但不完全為零的資料時很有用。如果為 False,則在計算前會將資料置中。

屬性:
location_形狀為 (n_features,) 的 ndarray

估計位置,即估計平均值。

covariance_形狀為 (n_features, n_features) 的 ndarray

估計的共變異數矩陣

precision_形狀為 (n_features, n_features) 的 ndarray

估計的偽逆矩陣。

n_iter_int

執行的迭代次數。

costs_(目標, 對偶間隙) 配對的列表

每次迭代時目標函數值和對偶間隙值的列表。僅當 return_costs 為 True 時才會傳回。

在版本 1.3 中新增。

n_features_in_int

fit 期間看到的特徵數量。

在版本 0.24 中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅當 X 具有全部為字串的特徵名稱時,才會定義。

在版本 1.0 中新增。

另請參閱

graphical_lasso

L1 懲罰共變異數估計器。

GraphicalLassoCV

具有交叉驗證選擇 L1 懲罰的稀疏逆共變異數。

範例

>>> 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)[原始碼]#

計算兩個共變異數估計器之間的均方誤差。

參數:
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,則會傳回誤差範數。

傳回值:
resultfloat

selfcomp_cov 共變異數估計器之間的均方誤差(在 Frobenius 範數的意義上)。

fit(X, y=None)[原始碼]#

將 GraphicalLasso 模型擬合到 X。

參數:
X形狀為 (n_samples, n_features) 的類陣列

從中計算共變異數估計值的資料。

y忽略

不使用,為了 API 一致性而存在。

傳回值:
self物件

傳回實例本身。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查閱使用者指南以了解路由機制如何運作。

傳回值:
routingMetadataRequest

一個封裝路由資訊的 MetadataRequest

get_params(deep=True)[原始碼]#

取得此估算器的參數。

參數:
deepbool, default=True

若為 True,將回傳此估算器以及所包含的子物件(亦為估算器)的參數。

傳回值:
paramsdict

參數名稱對應到其值的字典。

get_precision()[原始碼]#

取得精確度矩陣的 Getter。

傳回值:
precision_形狀為 (n_features, n_features) 的類陣列

與目前共變異數物件關聯的精確度矩陣。

mahalanobis(X)[原始碼]#

計算給定觀測值的平方馬氏距離。

參數:
X形狀為 (n_samples, n_features) 的類陣列

我們要計算其馬氏距離的觀測值。假設觀測值是從與 fit 中所用資料相同的分配中抽取出來的。

傳回值:
dist形狀為 (n_samples,) 的 ndarray

觀測值的平方馬氏距離。

score(X_test, y=None)[原始碼]#

計算在估計的高斯模型下 X_test 的對數似然率。

高斯模型由其平均值和共變異數矩陣定義,分別由 self.location_self.covariance_ 表示。

參數:
X_test形狀為 (n_samples, n_features) 的類陣列

我們計算其似然率的測試資料,其中 n_samples 是樣本數量,而 n_features 是特徵數量。 假設 X_test 是從與 fit 中所用資料相同的分配中抽取出來的 (包括中心化)。

y忽略

不使用,為了 API 一致性而存在。

傳回值:
resfloat

在以 self.location_self.covariance_ 作為高斯模型平均值和共變異數矩陣的估算器下,X_test 的對數似然率。

set_params(**params)[原始碼]#

設定此估算器的參數。

此方法適用於簡單的估算器,以及巢狀物件(例如 Pipeline)。後者的參數形式為 <component>__<parameter>,因此可以更新巢狀物件的每個元件。

參數:
**paramsdict

估算器參數。

傳回值:
self估算器實例

估算器實例。