LDA 选择的意外功能数



我正在尝试执行LDA(线性判别分析),以便对我的数据集(features,一个1360x532矩阵)执行降维(从532个特征)。

lda = LinearDiscriminantAnalysis(n_components=80)
features = lda.fit(features, target).transform(features)
print("[STATUS] LDA performed")
print("[STATUS] feature vector size {}".format(np.array(features).shape))

写了这段代码,我期待这些功能变得80,但我得到了这个意想不到的输出。

[STATUS] target labels shape: (1360,)
/home/robb/.local/lib/python2.7/site-packages/sklearn/discriminant_analysis.py:388: UserWarning: Variables are collinear.
  warnings.warn("Variables are collinear.")
[STATUS] LDA performed
[STATUS] feature vector size (1360, 16)

为什么16?它与我收到的警告有某种关系吗?

LDA 的行为不符合您的预期。

组件数始终小于唯一类的数量。

从文档中:

用于降维的分量数 (


我的猜测是,您在target变量中有 17 个唯一的类标签,因此,通过指定 80 个组件(比 17 个分量>)会导致此结果。

最新更新