Scikit learn 线性判别分析要求

Scikit learn 线性判别分析要求,scikit-learn,data-analysis,linear-discriminant,Scikit Learn,Data Analysis,Linear Discriminant,我正在尝试使用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', s

我正在尝试使用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的要求是什么?

根据:

因此,如果您有一个包含2个类的二进制问题,那么返回的组件数将是1。这就是你正在经历的

n_components : int, optional

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