在R中拟合模型时排除ID字段

时间:2018-05-18 20:57:59

标签: r random-forest data-science

我有一个简单的随机森林模型,我在R中创建并测试过。现在我已从训练/测试数据框中排除了内部公司ID。在R中是否有一种方法可以在我的数据中包含此列并让我的模型的训练/执行忽略该字段?

我显然不希望模型尝试将其作为变量合并,但是在添加了预测结果的列的数据导出后,我需要将内部ID绑定到其他客户数据中,以便我知道客户被归类为

我只是使用randomForest库中的开箱即用随机林功能

#divide data into training and test sets
set.seed(3)
id<-sample(2,nrow(Churn_Model_Data_v2),prob=c(0.7,0.3),replace = TRUE)
churn_train<-Churn_Model_Data_v2[id==1,]
churn_test<-Churn_Model_Data_v2[id==2,]

#changes Churn data 1/2 to a factor for model
Churn_Model_Data_v2$`Churn` <- as.factor(Churn_Model_Data_v2$`Churn`)
churn_train$`Churn` <- as.factor(churn_train$`Churn`)
#churn_test$`Churn` <- as.factor(churn_test$`Churn`)

bestmtry <- tuneRF(churn_train,churn_train$`Churn`, stepFactor = 1.2, 
improve =0.01, trace=T, plot=T )

#creates model based on training data, views model
churn_forest <- randomForest(`Churn`~. , data= churn_train )
churn_forest


#shows us what variables are most important
importance(churn_forest)
varImpPlot(churn_forest)

#predicts churn diagnosis on test data
predict_churn <- predict(churn_forest, newdata = churn_test, type="class")
predict_churn

1 个答案:

答案 0 :(得分:1)

排除特定列或列集的简单示例如下

library(MASS)
temp<-petrol
randomForest(No ~ .,data = temp[, !(colnames(temp) %in% c("SG"))]) # One Way
randomForest(No ~ .-SG,data = temp) #Another way with similar result

这种排除方法通常也适用于R中的其他功能/算法。