0

我正在尝试使用 sklearn LDA 分析稀疏数据集(但不仅如此,我还尝试了个人实现)。该数据集有 14 列和一些不同数量的列,我选择了这些列来运行不同的实验,以保持差异最大的那些。

X = dfplants.values
print(X.shape)
(14,15)
u,s,v = np.linalg.svd(X) 
print(len(s))
y = dfplants_sup['tecnique'].values
lda = LDA(n_components=2, solver='svd', store_covariance=True)
X_lda=lda.fit_transform(X,y)

print("X_lda")
print(X_lda)


X_lda 

[[-6.03602598]
 [-6.14807425]
 [-4.02479902]
 [-5.85982518]
 [-6.96663709]
 [-5.93062031]
 [-6.24874635]
 [ 5.42840829]
 [ 6.5065448 ]
 [ 6.47761884]
 [ 6.50027698]
 [ 6.31051439]
 [ 3.57171076]
 [ 6.41965411]]

无论我使用 2 个或更多组件,还是保留所有组件或仅保留两个具有最大差异的组件,我总是会得到 1 列。为什么我只得到一列?申请LDA有什么要求?

4

1 回答 1

1

根据文档

n_components : int, optional

    Number of components (< n_classes - 1) for dimensionality reduction.

因此,如果您有一个二进制问题(2 个类),那么返回的组件数将为 1。这就是您所遇到的。

于 2018-05-11T04:38:43.430 回答