[英]LDA covariance matrix not match calculated covariance matrix
我希望更好地理解 scikit-learn 的 LDA 對象返回的 covariance_ 屬性。
我確定我遺漏了一些東西,但我希望它是與輸入數據相關的協方差矩陣。 但是,當我將 .covariance_ 與 numpy.cov() 返回的協方差矩陣進行比較時,我得到了不同的結果。
任何人都可以幫助我了解我缺少什么嗎? 感謝並樂意提供任何其他信息。
請找到一個簡單的例子來說明下面的差異。
import numpy as np
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
# Sample Data
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
y = np.array([1, 1, 1, 0, 0, 0])
# Covariance matrix via np.cov
print(np.cov(X.T))
# Covariance matrix via LDA
clf = LinearDiscriminantAnalysis(store_covariance=True).fit(X, y)
print(clf.covariance_)
在sklearn.discrimnant_analysis.LinearDiscriminantAnalysis
,協方差計算如下:
In [1]: import numpy as np
...: cov = np.zeros(shape=(X.shape[1], X.shape[1]))
...: for c in np.unique(y):
...: Xg = X[y == c, :]
...: cov += np.count_nonzero(y==c) / len(y) * np.cov(Xg.T, bias=1)
...: print(cov)
array([[0.66666667, 0.33333333],
[0.33333333, 0.22222222]])
所以它對應於每個單獨類的協方差之和乘以類頻率的先驗。 注意這個先驗是LDA的一個參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.