Python 如何对不同特征工程过程中的特征进行标准化和规范化?

Python 如何对不同特征工程过程中的特征进行标准化和规范化?,python,machine-learning,scikit-learn,data-science,Python,Machine Learning,Scikit Learn,Data Science,我正在使用一个数据集,其中每个示例都包含数字和文本数据。因此,采用多种方法从数据集中构建训练特征矩阵。对于数据集中的每个样本,我从3个部分构造一个向量表示 段落文本的Doc2Vec向量表示法:我使用将文本编码为[-5,5] 文本标签的一个热编码向量:数据集中的每个样本都有零个或多个文本标签,我聚合出数据集中使用的所有唯一标签,并将其编码为仅包含0和1的二进制数组。例如,如果完整的标签集是[Python,Java,JavaScript,C++],并且示例包含标签Python和Java,则结果向量

我正在使用一个数据集,其中每个示例都包含数字和文本数据。因此,采用多种方法从数据集中构建训练特征矩阵。对于数据集中的每个样本,我从3个部分构造一个向量表示

  • 段落文本的Doc2Vec向量表示法:我使用将文本编码为
    [-5,5]

  • 文本标签的一个热编码向量:数据集中的每个样本都有零个或多个文本标签,我聚合出数据集中使用的所有唯一标签,并将其编码为仅包含0和1的二进制数组。例如,如果完整的标签集是
    [Python,Java,JavaScript,C++]
    ,并且示例包含标签
    Python
    Java
    ,则结果向量将是
    [1,1,0,0]

  • 数字数据和分类数据:

    • 数字数据字段按原样构建到特征向量中
    • 分类数据被映射到整数并构建到特征向量中
  • 生成的特征矩阵如下所示

    [
      [-1.02, 1.33, 2.35, -0.48, ... -4.11, 1, 0, 1, 1, 0, 0, ..., 1, 0, 235, 11.5, 333],
      [-0.22, 3.03, 1.95, -0.48, ... -4.11, 0, 1, 1, 1, 0, 0, ..., 0, 0, 233, 22, 333],
      [-2.07, -1.33, -2.35, -0.48, ... -4.11, 1, 1, 0, 1, 1, 0, ..., 1, 1, 102, 13, 333],
      [-4.32, 4.33, 1.75, -0.48, ... -4.11, 0, 0, 0, 1, 0, 1, ..., 1, 0, 98, 8, 333],
    ]
    
    我的问题是,我应该对数据集应用任何标准化或规范化吗?如果是这样,我应该在连接特征的不同部分之前还是之后进行


    我正在使用scikit学习,我使用的主要算法将是梯度增强。

    是的,您需要单独处理特征:您应该仅对原始数字特征应用标准化或规范化,而不应该对doc2vec、OHE或编码的分类特征应用标准化或规范化。

    您好,谢谢您的回答!请您参考这篇文章,其中阐述了“仅标准化数字特征”的原则?此外,对于标准化,是否只有在列车试验分割/CV分割后才有严格的标准化规则?1。例如:OHE值基本上是0或1,因此规范化的值不会有太大变化。但更重要的是,对于梯度增强的单调变换,变化不大,因为值的顺序很重要。对这是一条严格的规定。您可以使用验证数据查看未查看数据上的模型性能,因此所有转换都应适合于列车数据,然后应用于有效/测试数据