1

我已经编写了这个 R 代码来重现。在这里,我创建了一个唯一列“ID”,我不确定如何将预测列添加回测试数据集映射到它们各自的 ID。请指导我正确的方法来做到这一点。

#Code
library(C50)
data(churn)
data=rbind(churnTest,churnTrain)
data$ID<-seq.int(nrow(data)) #adding unique id column

rm(churnTrain)
rm(churnTest)

set.seed(1223)
ind <- sample(2,nrow(data),replace = TRUE, prob = c(0.7,0.3))
train <- data[ind==1,1:21]
test <- data[ind==2, 1:21]
xtrain <- train[,-20]
ytrain <- train$churn
xtest <- test[,-20]
ytest<- test$churn
x <- cbind(xtrain,ytrain)

## C50 Model
c50Model <- C5.0(churn ~ 
  state +
  account_length +
  area_code +
  international_plan +
  voice_mail_plan +
  number_vmail_messages +
  total_day_minutes +
  total_day_calls + 
  total_day_charge +
  total_eve_minutes +
  total_eve_calls +
  total_eve_charge +
  total_night_minutes +
  total_night_calls +
  total_night_charge +
  total_intl_minutes + 
  total_intl_calls +
  total_intl_charge +
  number_customer_service_calls,data=train, trials=10)

# Evaluate Model
c50Result <- predict(c50Model, xtest)
table(c50Result, ytest) 

#adding prediction to test data
testnew = cbind(xtest,c50Result)

#OR predict directly
xtest$churn = predict(c50Model, xtest)
4

1 回答 1

0

我会使用 match(dataID, predictID) 来匹配数据集中的 ID 列。

回复您的评论:如果您想将预测值添加到原始数据框中,合并数据和预测的两种方式都是正确的并且产生相同的结果。唯一的事情是,我会使用

xtest$churn_hut <- predict(c50Model, xtest)

代替

xtest$churn <- predict(c50Model, xtest)

因为在这里您将原始流失(如 data$churn)替换为模型预测的任何内容,因此您无法比较两者。

于 2016-02-01T08:08:42.443 回答