线性判别分析变换函数

Linear Discriminant Analysis transform function

x = data.values
y = target.values
lda = LDA(solver='eigen', shrinkage='auto',n_components=2)
df_lda = lda.fit(x,y).transform(x)
df_lda.shape

这是代码的一小部分。我正在尝试将维度降低到最具辨别力的方向。根据我的理解,transform() 函数投影数据以最大化我的数据集的 class 分离并且应该 return 形状数组 (n_samples, n_components)

但是我的 df_lda 是 (614, 1) 的形状。

我在这里错过了什么?或者我的数据不是线性可分的?

对于 target.valuesK 个不同的 类 的情况,转换后的数据中有 K-1 个分量(没有进一步降维)。由于您的数据集中只有两个 类,因此只有一个转换后的组件,因此您无法获得更多的组件。

我想当您请求的数量超过可用数量时,sklearn 可能会发出警告。