列车和测试中变量数量的差异

时间:2018-04-01 07:15:05

标签: r logistic-regression

我有一个包含以下变量的训练数据集

> names(train)

[1] "id"          "user_id"     "campaign_id" "send_date"   "is_open"    
[6] "is_click"

另外一个名为'campaign'的数据集,其中包含以下内容

> names(camp)

[1] "campaign_id"          "communication_type"   "total_links"         
[4] "no_of_internal_links" "no_of_images"         "no_of_sections"      
[7] "email_body"           "subject"              "email_url" 

测试数据集如下

> names(test)

[1] "id"          "campaign_id" "user_id"     "send_date" 

我使用左连接根据2个数据集中的'campaign_id'组合了火车和营地。

结果数据集名为“left”,它具有以下变量:

> names(left)

 [1] "id"                   "user_id"              "campaign_id"         
 [4] "send_date"            "communication_type"   "total_links"         
 [7] "no_of_internal_links" "no_of_images"         "no_of_sections"      
[10] "email_body"           "subject"              "email_url"           
[13] "is_open"              "is_click" 

数据集的维度分别如下:

> dim(train);dim(camp);dim(left);dim(test)

[1] 1023191       6
[1] 52  9
[1] 1023191      14
[1] 773858      4

我根据要求对数据集'left'进行了逻辑回归,不包括变量“id”和“campaign_id”。 “is_click”是类变量。

model <- glm(is_click ~., data = left[, !names(left) %in% c("id", "campaign_id")], family = binomial)

模型成功运行。但是当我尝试使用预测函数预测测试数据集时,它会发出一个错误,因为测试数据集没有训练模型的数据集中的所有变量 - “左”

> predict1 <- pglogis(predict(model, test))
Error in eval(predvars, data, env) : 
  object 'communication_type' not found

我希望输出包含变量“id”和“is_click”。 “is_click”是类变量,我希望将概率视为0&lt; 0.5和1为概率&gt; 0.5

非常感谢您的帮助。

0 个答案:

没有答案