二次判別分析#
- class sklearn.discriminant_analysis.QuadraticDiscriminantAnalysis(*, priors=None, reg_param=0.0, store_covariance=False, tol=0.0001)[原始碼]#
二次判別分析 (Quadratic Discriminant Analysis)。
此分類器具有二次決策邊界,透過將類別條件密度擬合到資料並使用貝氏規則來產生。
此模型將高斯密度擬合到每個類別。
於 0.17 版本新增。
關於
QuadraticDiscriminantAnalysis
和LinearDiscriminantAnalysis
之間的比較,請參閱 具有共變異數橢圓的線性與二次判別分析。更多資訊請參閱 使用者指南。
- 參數:
- priors類陣列 (array-like),形狀為 (n_classes,),預設值為 None
類別先驗機率。預設情況下,類別比例會從訓練資料中推斷。
- reg_param浮點數 (float),預設值為 0.0
透過將 S2 轉換為
S2 = (1 - reg_param) * S2 + reg_param * np.eye(n_features)
來正規化每個類別的共變異數估計值,其中 S2 對應於給定類別的scaling_
屬性。- store_covariance布林值 (bool),預設值為 False
如果為 True,則會明確計算類別共變異數矩陣並將其儲存在
self.covariance_
屬性中。於 0.17 版本新增。
- tol浮點數 (float),預設值為 1.0e-4
在對每個
Sk
應用一些正規化(請參閱reg_param
)後,將共變異數矩陣視為秩不足的絕對閾值,其中Sk
表示第 k 個類別的共變異數矩陣。 此參數不影響預測。 它控制當共變異數矩陣不是滿秩時何時引發警告。於 0.17 版本新增。
- 屬性:
- covariance_長度為 n_classes 的 list,其中包含形狀為 (n_features, n_features) 的 ndarray
針對每個類別,提供使用該類別樣本估計的共變異數矩陣。這些估計值是無偏的。僅當
store_covariance
為 True 時才會顯示。- means_類陣列 (array-like),形狀為 (n_classes, n_features)
各類別的平均值。
- priors_類陣列 (array-like),形狀為 (n_classes,)
類別先驗機率(總和為 1)。
- rotations_長度為 n_classes 的 list,其中包含形狀為 (n_features, n_k) 的 ndarray
對於每個類別 k,形狀為 (n_features, n_k) 的陣列,其中
n_k = min(n_features, 類別 k 中的元素數)
。它是高斯分佈的旋轉,即其主軸。它對應於V
,它是來自Xk = U S Vt
的 SVD 的特徵向量矩陣,其中Xk
是來自類別 k 的樣本的中心矩陣。- scalings_長度為 n_classes 的 list,其中包含形狀為 (n_k,) 的 ndarray
對於每個類別,包含高斯分佈沿其主軸的縮放,即旋轉座標系統中的變異數。它對應於
S^2 / (n_samples - 1)
,其中S
是來自Xk
的 SVD 的奇異值對角矩陣,其中Xk
是來自類別 k 的樣本的中心矩陣。- classes_形狀為 (n_classes,) 的 ndarray
唯一的類別標籤。
- n_features_in_整數 (int)
在 fit 期間看到的特徵數量。
於 0.24 版本新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅當
X
具有全部為字串的特徵名稱時才會定義。於 1.0 版本新增。
另請參閱
LinearDiscriminantAnalysis
線性判別分析 (Linear Discriminant Analysis)。
範例
>>> from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis >>> import numpy as np >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) >>> y = np.array([1, 1, 1, 2, 2, 2]) >>> clf = QuadraticDiscriminantAnalysis() >>> clf.fit(X, y) QuadraticDiscriminantAnalysis() >>> print(clf.predict([[-0.8, -1]])) [1]
- decision_function(X)[原始碼]#
將決策函數應用於樣本陣列。
決策函數等於(直到一個常數因子)模型的對數後驗,即
log p(y = k | x)
。在二元分類設定中,這對應於差異log p(y = 1 | x) - log p(y = 0 | x)
。請參閱 LDA 和 QDA 分類器的數學公式。- 參數:
- X類陣列 (array-like),形狀為 (n_samples, n_features)
樣本陣列(測試向量)。
- 返回:
- C形狀為 (n_samples,) 或 (n_samples, n_classes) 的 ndarray
每個樣本與每個類別相關的決策函數值。在雙類別情況下,形狀為
(n_samples,)
,給出正類別的對數似然比。
- fit(X, y)[原始碼]#
根據給定的訓練資料和參數擬合模型。
在 0.19 版本中變更:
store_covariances
已移至主建構函式,並改名為store_covariance
。在 0.19 版本中變更:
tol
已移至主建構函式。- 參數:
- X類陣列 (array-like),形狀為 (n_samples, n_features)
訓練向量,其中
n_samples
是樣本數,n_features
是特徵數。- y形狀為 (n_samples,) 的類陣列
目標值 (整數)。
- 返回:
- self物件
已擬合的估算器。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請檢查 使用者指南 了解路由機制如何運作。
- 返回:
- routingMetadataRequest
一個封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deepbool,預設值為 True
如果為 True,將會回傳此估算器及其包含的子物件(也是估算器)的參數。
- 返回:
- paramsdict
參數名稱對應到其值的字典。
- predict(X)[原始碼]#
對測試向量 X 陣列執行分類。
會回傳 X 中每個樣本的預測類別 C。
- 參數:
- X類陣列 (array-like),形狀為 (n_samples, n_features)
要評分的向量,其中
n_samples
是樣本數,n_features
是特徵數。
- 返回:
- C形狀為 (n_samples,) 的 ndarray
估計的機率。
- predict_log_proba(X)[原始碼]#
回傳分類後驗機率的對數。
- 參數:
- X類陣列 (array-like),形狀為 (n_samples, n_features)
樣本/測試向量陣列。
- 返回:
- C形狀為 (n_samples, n_classes) 的 ndarray
每個類別分類的後驗對數機率。
- predict_proba(X)[原始碼]#
回傳分類的後驗機率。
- 參數:
- X類陣列 (array-like),形狀為 (n_samples, n_features)
樣本/測試向量陣列。
- 返回:
- C形狀為 (n_samples, n_classes) 的 ndarray
每個類別分類的後驗機率。
- score(X, y, sample_weight=None)[原始碼]#
回傳給定測試資料和標籤的平均準確度。
在多標籤分類中,這是子集準確度,因為每個樣本都必須正確預測每個標籤集,所以是一種嚴苛的度量標準。
- 參數:
- X類陣列 (array-like),形狀為 (n_samples, n_features)
測試樣本。
- y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列
X
的真實標籤。- sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None
樣本權重。
- 返回:
- scorefloat
self.predict(X)
相對於y
的平均準確度。
- set_params(**params)[原始碼]#
設定此估算器的參數。
此方法適用於簡單的估算器以及巢狀物件 (例如
Pipeline
)。後者的參數格式為<component>__<parameter>
,因此可以更新巢狀物件的每個元件。- 參數:
- **paramsdict
估算器參數。
- 返回:
- self估算器實例
估算器實例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') QuadraticDiscriminantAnalysis [原始碼]#
請求傳遞至
score
方法的中繼資料。請注意,此方法僅在
enable_metadata_routing=True
時相關(請參閱sklearn.set_config
)。請參閱 使用者指南,了解路由機制的運作方式。每個參數的選項如下:
True
:請求中繼資料,並在提供時傳遞給score
。如果未提供中繼資料,則會忽略該請求。False
:不請求中繼資料,且 meta-estimator 不會將其傳遞給score
。None
:不請求中繼資料,如果使用者提供中繼資料,meta-estimator 將會引發錯誤。str
:中繼資料應該使用這個給定的別名傳遞給 meta-estimator,而不是原始名稱。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這允許您變更某些參數的請求,而保持其他參數不變。在 1.3 版本中新增。
注意
此方法僅在此估計器用作 meta-estimator 的子估計器時才相關,例如在
Pipeline
內部使用。否則它沒有任何效果。- 參數:
- sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
用於
score
中sample_weight
參數的中繼資料路由。
- 返回:
- self物件
更新後的物件。