我正在使用一个数据集,其中每个样本都包含数字和文本数据。因此,采用多种方法从数据集中构建训练特征矩阵。对于数据集中的每个样本,我从 3 个部分构建一个向量表示。
段落文本的 Doc2Vec 向量表示:我使用段落向量的
gensim
实现将文本编码为 [-5, 5]
之间的 100 维浮点数向量
文本标签的单热编码向量:数据集中的每个样本都有零个或多个文本标签,我聚合了数据集中使用的所有唯一标签并将其编码为仅包含 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-learn,我使用的主要算法是梯度提升。
是的,您需要单独处理特征:您应该仅对原始数字特征应用标准化或归一化,不应该对 doc2vec、OHE 或编码分类特征执行此操作。