0

在处理文本数据时,我理解需要将文本标签编码为一些数字表示(即,通过使用LabelEncoderOneHotEncoder

但是,我的问题是,当您使用某些特征提取类(即等)时,您是否需要明确执行此步骤TfidfVectorizerCountVectorizer或者这些是否会为您编码标签?

如果您确实需要自己单独对标签进行编码,您是否可以在 a 中执行此步骤Pipeline(例如下面的那个)

    pipeline = Pipeline(steps=[
        ('tfidf', TfidfVectorizer()),
        ('sgd', SGDClassifier())
    ])

或者您是否需要事先对标签进行编码,因为管道期望fit()transform()数据(而不是标签)?

4

1 回答 1

0

查看scikit-learn术语transform的词汇表:

在转换器中,将输入(通常只有 X)转换为某个转换后的空间(通常表示为 Xt)。输出是长度为 n_samples 且列数在拟合后固定的数组或稀疏矩阵。

事实上,几乎所有的转换器都只转换特征。这适用于TfidfVectorizer并且CountVectorizer同样适用。如果有疑问,您可以随时检查转换函数的返回类型(如 的fit_transform方法CountVectorizer)。

当您在管道中组装多个变压器时也是如此。它在其用户指南中说明:

Transformer 通常与分类器、回归器或其他估计器组合以构建复合估计器。最常用的工具是管道。Pipeline 通常与 FeatureUnion 结合使用,它将转换器的输出连接到复合特征空间中。TransformedTargetRegressor 处理变换目标(即对数变换 y)。相反,Pipelines 仅转换观察到的数据 (X)

因此,总而言之,您通常在适合估算器/管道之前单独处理标签。

于 2021-06-08T08:49:28.263 回答