1

考虑以下示例

library(text2vec)
library(glmnet)
library(dplyr)

dataframe <- data_frame(id = c(1,2,3,4),
                        text = c("this is a test", "this is another",'hello','what???'),
                        value = c(200,400,120,300),
                        output = c('win', 'lose','win','lose'))

> dataframe
# A tibble: 4 × 4
     id            text value output
  <dbl>           <chr> <dbl>  <chr>
1     1  this is a test   200    win
2     2 this is another   400   lose
3     3           hello   120    win
4     4         what???   300   lose

现在,我可以使用excellenttext2vec得到一个与列对应的稀疏矩阵text。为此,我只需要遵循 text2vec 教程:

it_train = itoken(dataframe$text, 
                  ids = dataframe$id, 
                  progressbar = FALSE)

vocab = create_vocabulary(it_train)
vectorizer = vocab_vectorizer(vocab)
dtm_train = create_dtm(it_train, vectorizer)

> dtm_train
4 x 7 sparse Matrix of class "dgCMatrix"
  hello another what??? a is test this
1     .       .       . 1  1    1    1
2     .       1       . .  1    .    1
3     1       .       . .  .    .    .
4     .       .       1 .  .    .    .

这个 dtm 稀疏矩阵可以输入到 ML 模型中。但我的问题是:我怎样才能使用value变量?

也就是说,作为 glmnet 或 xgboost 中的输入预测器,我想使用value包含一些有价值信息的稀疏矩阵(来自文本变量)以及我的变量。我怎样才能做到这一点?我们能否以某种方式向稀疏矩阵添加信息?

谢谢!

4

1 回答 1

0

你可以使用 sparse.hstacks

import numpy as np
from scipy.sparse import hstack

dtm_train = hstack((dtm_train,np.array(dataframe['value'])[:,None]))

请记住,您必须对保留数据进行类似的操作!

于 2020-02-26T06:53:57.180 回答