首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用训练集运行回归

如何使用训练集运行回归
EN

Stack Overflow用户
提问于 2018-08-08 22:39:14
回答 4查看 66关注 0票数 0

我想使用我放入整洁文本格式的训练数据框架运行回归。原始数据文件包括有明显发育障碍的参与者和可能有或可能没有发育障碍的参与者。我从一个更大、更整洁的文本数据框中创建了一个数据框,它可以提取文本文件中的关键字,并记录该词在文本文档中出现的次数。那些有明显残疾的人在他们的名字前面有"D“。它看起来是这样的:

代码语言:javascript
运行
复制
Name of Text File     Word       n
    DAdam            autism      3
    DAdam             adhd       2
    DJane            autism      1
     Mark             adhd       4
     Joey             add        3

然后,我添加了二进制变量来表示单词是否出现,其中1表示是,0表示否

代码语言:javascript
运行
复制
df$autism <- 1
df$autism <- if_else(one_dev$word == "autism", 1, 0)

因此,现在的数据框如下所示:

代码语言:javascript
运行
复制
Name of Text File     Word       n   autism  adhd   add
    DAdam            autism      3      1     0      0 
    DAdam             adhd       2      0     1      0
    DJane            autism      1      1     0      0
     Mark             adhd       4      0     1      0 
     Joey             add        3      0     0      1

我希望它看起来像这样:

代码语言:javascript
运行
复制
   Name of Text File    autism  adhd   add
    DAdam                  1     1      0 
    DJane                  1     0      0
     Mark                  0     1      0 
     Joey                  0     0      1

然后,我希望能够运行回归分析,尝试并预测某个特定参与者是否可能患有发育障碍。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-08-15 06:56:22

如果您具有整洁格式的文本,并且希望它采用适合建模的格式,则通常需要对其执行cast()操作。我经常使用cast_sparse(),特别是当我想做glmnet modeling的时候。

你可以这样开始:

代码语言:javascript
运行
复制
library(tidyverse)
library(tidytext)

df <- tribble(~name,  ~disability, ~word, ~count,
              "Adam",  TRUE,   "autism", 3,
              "Adam",  TRUE,   "adhd",   2,
              "Jane",  TRUE,   "autism", 1,
              "Mark",  FALSE,  "adhd",   4,
              "Joey",  FALSE,  "add",    3)

sparse_words <- df %>%
  cast_sparse(name, word, count)

sparse_words
#> 4 x 3 sparse Matrix of class "dgCMatrix"
#>      autism adhd add
#> Adam      3    2   .
#> Jane      1    .   .
#> Mark      .    4   .
#> Joey      .    .   3

然后,您可以继续在任何一种喜欢矩阵输入的机器学习模型中使用这个稀疏矩阵(这是大多数模型!)。在这里,让我们来看看如何创建一个简单的数据框架并拟合一个玩具回归。

代码语言:javascript
运行
复制
df_model <- sparse_words %>% 
  as.matrix() %>% 
  tbl_df() %>% 
  bind_cols(df %>% 
              distinct(name, disability) %>%
              select(disability))

df_model
#> # A tibble: 4 x 4
#>   autism  adhd   add disability
#>    <dbl> <dbl> <dbl> <lgl>     
#> 1      3     2     0 TRUE      
#> 2      1     0     0 TRUE      
#> 3      0     4     0 FALSE     
#> 4      0     0     3 FALSE

lm(disability ~ ., data = df_model)
#> 
#> Call:
#> lm(formula = disability ~ ., data = df_model)
#> 
#> Coefficients:
#> (Intercept)       autism         adhd          add  
#>      0.8000       0.2000      -0.2000      -0.2667

reprex package创建于2018-08-14 (v0.2.0)。

票数 0
EN

Stack Overflow用户

发布于 2018-08-08 22:48:53

tidyr和dplyr的组合可以帮助您实现这一目标。从您的tidytext data.frame开始,您可以继续传播数据,并修改第一列之后的所有内容。

代码语言:javascript
运行
复制
df1 %>% 
  spread(Word, n) %>% 
  mutate_at(-1, function(x) ifelse(is.na(x), 0, 1))

  Name_of_Text_File add adhd autism
1             DAdam   0    1      1
2             DJane   0    0      1
3              Joey   1    0      0
4              Mark   0    1      0

数据:

代码语言:javascript
运行
复制
df1 <- structure(list(Name_of_Text_File = c("DAdam", "DAdam", "DJane", 
"Mark", "Joey"), Word = c("autism", "adhd", "autism", "adhd", 
"add"), n = c(3L, 2L, 1L, 4L, 3L)), class = "data.frame", row.names = c(NA, 
-5L))
票数 0
EN

Stack Overflow用户

发布于 2018-08-08 22:59:12

类似于另一个答案:

代码语言:javascript
运行
复制
library(dplyr)
library(tidyr)

df1 %>% 
    mutate(n = 1) %>%  
    spread(Word, n, fill = 0)
#   Name_of_Text_File add adhd autism
# 1             DAdam   0    1      1
# 2             DJane   0    0      1
# 3              Joey   1    0      0
# 4              Mark   0    1      0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51749425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档