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]))
помните, что вы должны проделать аналогичную операцию с вашими данными!