【问题标题】:Linear Discriminant Analysis transform function线性判别分析变换函数
【发布时间】:2018-02-07 08:12:40
【问题描述】:
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() 函数投影数据以最大化我的数据集的类分离,并应返回形状为 (n_samples, n_components)

的数组

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

我在这里缺少什么?或者我的数据不是线性可分的?

【问题讨论】:

  • Whats x.shape(可能还有类型)?
  • x.shape = (614, 6)x.dtype = ('float64')
  • target.values 中有多少个类(不同的值)?
  • 没错。对于两个类,LDA 变换中只有一个组件。
  • 这取决于您要达到的目标。按照 LDA 的说法,你已经有了最具辨别力的方向。还有其他一些选择(取决于您要实现的目标)。想到的一种技术是Decision Boundary Feature Extraction

标签: python machine-learning scikit-learn lda dimensionality-reduction


【解决方案1】:

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

我想当您请求的数量超出可用范围时,sklearn 发出警告可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2017-08-14
    • 2013-06-19
    • 2014-07-17
    • 2013-12-10
    • 2018-07-08
    • 2022-06-22
    • 2011-08-03
    • 2020-02-03
    • 2016-07-06
    相关资源
    最近更新 更多