您可以使用 LDA(线性判别分析)作为 sklearn 管道的一部分进行预处理吗?
Posted
技术标签:
【中文标题】您可以使用 LDA(线性判别分析)作为 sklearn 管道的一部分进行预处理吗?【英文标题】:Can you use LDA (Linear Discriminant Analysis) as part of sklearn pipeline for preprocessing? 【发布时间】:2022-01-10 04:23:57 【问题描述】:所以这就是我将数据通过方差阈值运行以进行特征选择,然后通过归一化器和 LDA 进行降维的汇总。
我不太确定 LDA 元素,因为我找不到在管道中使用此元素的任何示例(作为降维/数据转换技术,而不是独立的分类器。)
我有点担心,因为当使用它并将转换后的数据传递给一系列分类器时 - 它们会产生一系列相同的准确度、精确度、召回率和 F1 分数。只有 AdaBoost 的应用才能带来不同的东西。
我在这里做错了吗?
pipeline = Pipeline([
('feature_selection', VarianceThreshold()),
('normaliser', Normalizer()),
('lda', LinearDiscriminantAnalysis())], verbose = True)
X_train_post_pipeline = pipeline.fit_transform(X_train, Y_train)
X_test_post_pipeline = pipeline.transform(X_test)
【问题讨论】:
【参考方案1】:LinearDiscriminantAnalysis
是一种降维技术,可以与PCA
进行比较。因此它可以在管道中用作预处理。
使用其结果的分类器最终可能得到与 LDA 项目输入到最具辨别力的方向相同的分数。
以下是使用 LDA 作为预处理步骤的管道示例:
from sklearn.pipeline import make_pipeline
from sklearn.feature_selection import VarianceThreshold
from sklearn.preprocessing import Normalizer
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
X, y = make_classification(n_classes=2)
pipe = make_pipeline(VarianceThreshold(),
Normalizer(),
LinearDiscriminantAnalysis(),
LogisticRegression())
pipe.fit(X, y)
【讨论】:
以上是关于您可以使用 LDA(线性判别分析)作为 sklearn 管道的一部分进行预处理吗?的主要内容,如果未能解决你的问题,请参考以下文章