R: как добавить числовые переменные в разреженную матрицу?

Рассмотрим следующий пример

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

Теперь я могу использовать отличный text2vec чтобы получить разреженную матрицу, соответствующую 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 переменная, которая содержит некоторую ценную информацию. Как я могу это сделать? Можем ли мы как-то добавить информацию в разреженную матрицу?

Спасибо!

0 ответов

Вы можете использовать sparse.hstacks

import numpy as np
from scipy.sparse import hstack

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

помните, что вы должны проделать аналогичную операцию с вашими данными!

Другие вопросы по тегам