选择的 LDA 意外数量的功能
LDA unexpected number of features selected
我正在尝试执行 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 的行为与您预期的不同。
组件的数量 总是 小于唯一的 classes 的数量。
来自docs:
Number of components (< n_classes - 1) for dimensionality reduction.
我的猜测是您在 target
变量中有 17 个唯一的 class 标签,因此,通过指定 80 个组件(大于 17)会导致此结果。
我正在尝试执行 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 的行为与您预期的不同。
组件的数量 总是 小于唯一的 classes 的数量。
来自docs:
Number of components (< n_classes - 1) for dimensionality reduction.
我的猜测是您在 target
变量中有 17 个唯一的 class 标签,因此,通过指定 80 个组件(大于 17)会导致此结果。