R 如何用文本和数字变量训练套索?

R 如何用文本和数字变量训练套索?,r,classification,tm,text2vec,R,Classification,Tm,Text2vec,考虑这个经过修改的经典示例: library(dplyr) library(tibble) dtrain <- data_frame(text = c("Chinese Beijing Chinese", "Chinese Chinese Shanghai", "France", "Tokyo Japan Ch

考虑这个经过修改的经典示例:

library(dplyr)
library(tibble)

dtrain <- data_frame(text = c("Chinese Beijing Chinese",
                              "Chinese Chinese Shanghai",
                              "France",
                              "Tokyo Japan Chinese"),
                     add_numeric = c(1, 1, 0, 1),
                     doc_id = 1:4,
                     class = c(1, 1, 1, 0))


> dtrain
# A tibble: 4 x 4
  text                     add_numeric doc_id class
  <chr>                          <dbl>  <int> <dbl>
1 Chinese Beijing Chinese            1      1     1
2 Chinese Chinese Shanghai           1      2     1
3 France                             0      3     1
4 Tokyo Japan Chinese                1      4     0
库(dplyr)
图书馆(tibble)
dtrain dtrain
#一个tibble:4x4
文本添加\u数字文档\u id类
1中文北京中文11
2中国上海1 2 1
3法国0 3 1
4东京日本中文1 4 0
在这里,我想用套索来预测
。感兴趣的变量是
text
add\u numeric

我知道如何使用
text2vec
tm
仅使用
text
预测
class
:软件包将
text
转换为稀疏文档术语矩阵并输入模型

但是,在这里,我想同时使用文本变量
text
,和
add\u numeric
。我不知道如何混合这两种方法。有什么想法吗?
谢谢

我没有检查如何使用text2vec实现这一点,但是使用quanteda,这非常容易,只需使用
cbind
,其优点是保持稀疏矩阵。我没有更改DIMNAME,因此添加的列将显示为feat1

library(quanteda)

dtm <- dfm(dtrain$text) # create documenttermmatrix
dtm_num <- cbind(dtm, dtrain$add_numeric) # add column to sparse matrix.
dtm_num
Document-feature matrix of: 4 documents, 7 features (60.7% sparse).
4 x 7 sparse Matrix of class "dfm"
       features
docs    chinese beijing shanghai france tokyo japan feat1
  text1       2       1        0      0     0     0     1
  text2       2       0        1      0     0     0     1
  text3       0       0        0      1     0     0     0
  text4       1       0        0      0     1     1     1
库(quanteda)

dtm在
add\u numeric
上训练您的
Lasso
模型,从
text
获得的虚拟变量不能解决您的问题?PS:既然
是分类的,我建议你训练一个
逻辑套索
模型,而不是简单的
套索
。是的,这是一个想法,但在实践中如何做到?我的文本有数千个不同的单词,因此我需要使用
text2vec
或其他文件中的dtm。但是,在这些软件包中,我无法轻松地将我的数字添加到
dtm
(它们仅用于文本),因此您的问题是如何从因子变量中获取假人?这个问题已经回答了。值得一去看看R提供的所有方法。非常有效!我们能把这个喂套索吗?是的,直接喂
glmnet(dtm_num,y=dtrain$class)
glmnet doc:x可以采用稀疏矩阵格式Hello phiver
cbind
今天不再工作了。。。有什么想法吗?谢谢@ℕʘʘḆḽḘ, 你说它不再工作是什么意思?如果我使用上面的例子,一切都很好。quanteda 2.1.2和R 4.0.2