OAS#

class sklearn.covariance.OAS(*, store_precision=True, assume_centered=False)[source]#

Oracle 近似收縮估計器。

請參閱使用者指南以了解更多資訊。

參數:
store_precisionbool,預設值 = True

指定是否儲存估計的精確度。

assume_centeredbool,預設值 = False

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

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

估計的共變異數矩陣。

location_形狀為 (n_features,) 的 ndarray

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

precision_形狀為 (n_features, n_features) 的 ndarray

估計的偽逆矩陣。(僅當 store_precision 為 True 時才儲存)

shrinkage_float

用於計算收縮估計的凸組合中的係數。範圍為 [0, 1]。

n_features_in_int

fit 期間看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

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

在 1.0 版本中新增。

另請參閱

EllipticEnvelope

用於檢測高斯分佈數據集中離群值的物件。

EmpiricalCovariance

最大似然共變異數估計器。

GraphicalLasso

使用 l1 懲罰估計器的稀疏逆共變異數估計。

GraphicalLassoCV

使用交叉驗證選擇 l1 懲罰的稀疏逆共變異數。

LedoitWolf

LedoitWolf 估計器。

MinCovDet

最小共變異數行列式 (共變異數的穩健估計器)。

ShrunkCovariance

具有收縮的共變異數估計器。

註解

正規化的共變異數為

(1 - shrinkage) * cov + shrinkage * mu * np.identity(n_features),

其中 mu = trace(cov) / n_features,而 shrinkage 由 OAS 公式給出 (參見 [1])。

此處實作的收縮公式與 [1] 中的方程式 23 不同。在原始文章中,公式 (23) 表示 2/p (p 為特徵數量) 在分子和分母中都乘以 Trace(cov*cov),但此操作被省略,因為對於較大的 p,2/p 的值非常小,以至於不會影響估計器的值。

參考文獻

範例

>>> import numpy as np
>>> from sklearn.covariance import OAS
>>> from sklearn.datasets import make_gaussian_quantiles
>>> real_cov = np.array([[.8, .3],
...                      [.3, .4]])
>>> rng = np.random.RandomState(0)
>>> X = rng.multivariate_normal(mean=[0, 0],
...                             cov=real_cov,
...                             size=500)
>>> oas = OAS().fit(X)
>>> oas.covariance_
array([[0.7533..., 0.2763...],
       [0.2763..., 0.3964...]])
>>> oas.precision_
array([[ 1.7833..., -1.2431... ],
       [-1.2431...,  3.3889...]])
>>> oas.shrinkage_
np.float64(0.0195...)
error_norm(comp_cov, norm='frobenius', scaling=True, squared=True)[來源]#

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

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

要比較的共變異數。

norm{"frobenius", "spectral"}, default="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)[來源]#

將 Oracle Approximating Shrinkage 共變異數模型擬合到 X。

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

訓練資料,其中 n_samples 是樣本數,而 n_features 是特徵數。

y已忽略

未使用,為符合 API 一致性而依慣例存在。

傳回值:
selfobject

傳回實例本身。

get_metadata_routing()[來源]#

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

請查看 使用指南,了解路由機制的運作方式。

傳回值:
routingMetadataRequest

一個 MetadataRequest,封裝路由資訊。

get_params(deep=True)[來源]#

取得此估計器的參數。

參數:
deepbool,預設值為 True

如果為 True,將傳回此估計器和包含的子物件 (屬於估計器) 的參數。

傳回值:
paramsdict

參數名稱對應到其值。

get_precision()[來源]#

精度矩陣的 Getter。

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

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

mahalanobis(X)[來源]#

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

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

我們計算其馬氏距離的觀測值。假設觀測值是從與擬合中使用的資料相同的分佈中提取的。

傳回值:
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 假設與用於擬合的資料(包括中心化)來自相同的分佈。

y已忽略

未使用,為符合 API 一致性而依慣例存在。

傳回值:
res浮點數

X_test 的對數似然率,其中 self.location_self.covariance_ 分別作為高斯模型平均值和共變異數矩陣的估計值。

set_params(**params)[來源]#

設定此估計器的參數。

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

參數:
**params字典

估計器參數。

傳回值:
self估計器實例

估計器實例。