gpt4 book ai didi

python - Numpy 中的一维 LDA 输出维度

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:16 30 4
gpt4 key购买 nike

我正在尝试将 2000 维数据降维为二维数据。所以我在这里使用了示例代码:http://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_lda.html但我从 LDA 得到的是一维输出,而不是二维输出。有人对原因有建议吗?这是我的代码:

lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(X, y).transform(X)

X、y、X_r2的形状分别如下:

(33139, 2000) (33139,) (33139, 1)

如您所见,X_r2 是一维的,而我希望它是二维的,因为我设置了 n_components=2

最佳答案

the documentation表示,n_components 是“用于降维的组件数量 (< n_classes - 1)。”

如果该参数等于或大于 n_classes-1,则该参数无效,因为 LDA 永远不会使用比 n_classes-1 更多的维度。数学解释在 Wikipedia ;非正式地,一维足以分隔两个点(现在将类视为点),二维足以分隔三个点,等等。

因此,如果数据中只有两个类,LDA 变换的输出将是一维的。

这是一个独立的示例:

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
X = [[0,0,0], [0,0,1], [1,0,0], [0,1,0], [0,1,1], [1,2,3]]
y = [0,0,0,1,1,1]
lda = LinearDiscriminantAnalysis(n_components=2)
print(lda.fit(X, y).transform(X))

输出是一个 6 x 1 数组。将 y 更改为

y = [0,0,1,1,2,2]

将产生 6×2 输出。

关于python - Numpy 中的一维 LDA 输出维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38044811/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com