【问题标题】:How to train a model in sklearn with a feature column containing vectors instead of scalars?如何使用包含向量而不是标量的特征列在 sklearn 中训练模型?
【发布时间】:2020-06-30 06:02:51
【问题描述】:

假设我有一个包含星期几的数据集:sat、sun、mon 等。

我使用了用嵌入替换类别的技术。在我使用 1-hot 编码转换“星期几”特征之前,实体嵌入为我提供了每天的向量。

如何在我的模型中使用这些向量?

类似问题适用于 NLP 分类任务。说之前我会对我的词汇表中的所有单词进行热编码,所以每一列对应一个单词。现在我有代表每个单词的向量。这如何改变模型?我是否需要为逻辑回归提供 3D 张量?

【问题讨论】:

    标签: machine-learning scikit-learn word-embedding


    【解决方案1】:

    您应该将一行表示为一个向量,这可以通过连接列表来简单地完成。我想你使用的是 pandas DataFrame,所以代码示例可能如下所示:

    X_train_full = []
    
    for i, index in enumerate(X_train.index):
        embeddings = calculate_embeddings(X_train.loc[index, 'SOME_COLUMN'])
        X_train_full.append(np.concatenate([X_train.values[i], embeddings]))
    

    【讨论】:

    • 不确定我是否完全理解。我的数据将具有除单个分类变量之外的特征。例如,我可能有“年龄、价格、星期几”。这些是每行中的三个标量值。现在,如果我将星期几转换为包含嵌入的向量,您是说我只是将向量连接到年龄和价格列吗?如果我的星期向量长度为​​ 3,那么我的新特征矩阵是 age+price+dow_vector=5 列/行?
    • 没错!你的例子是正确的。 Imagen 如果您只为“day_of_week”列执行 OneHotEncoding 会发生什么。这是 sklearn 文档中有关“具有混合类型的列转换器”的示例:scikit-learn.org/stable/auto_examples/compose/…
    猜你喜欢
    • 2021-08-17
    • 2019-06-21
    • 2016-03-02
    • 2018-02-25
    • 2020-02-18
    • 2020-03-03
    • 2013-02-05
    • 1970-01-01
    • 2020-12-29
    相关资源
    最近更新 更多