首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机森林预测模型

随机森林预测模型
EN

Stack Overflow用户
提问于 2019-02-16 19:08:39
回答 1查看 121关注 0票数 1

我正在尝试建立一个随机森林模型来解决价格预测问题。我经历了以下几个步骤:

1)将数据分成训练、测试、有效三个集合(不仅训练和测试还需要分成三个集合)

代码语言:javascript
复制
set.seed(1234)
assignment <- sample(1:3, size = nrow(train), prob = c(0.7, 0.15, 0.15), replace = TRUE) 
#Create a train, validation and tests from the train data
train_train <- train[assignment == 1, ]  
train_valid <- train[assignment == 2, ]  
train_test <- train[assignment == 3, ] 

2)我已经建立了模型,其中x和y来自训练集

代码语言:javascript
复制
fit_rf_train <- train(x = train_train[, -which(names(train_train) %in% 
c("Item_Identifier", "Item_Outlet_Sales"))], 
                y = train_train$Item_Outlet_Sales,
                method = "ranger",
                metric = "RMSE",
                tuneGrid = expand.grid(
                  .mtry = 6,
                  .splitrule = "variance",
                  .min.node.size = c(10,15,20)),
                trControl = trControl,
                importance = "permutation",
                num.trees = 350)

我在相同的列车数据上有以下模型输出的屏幕截图:

3)使用预测函数时,我将模型与其他两个数据集一起使用,并使用以下代码行进行测试:

代码语言:javascript
复制
prediction_test <- predict(fit_rf_train, train_test)
prediction_valid <- predict(fit_rf_train, train_valid)

我的问题是,如何在未见过的数据(测试和有效)上测量模型的性能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-16 19:27:15

如果您想继续使用caret,则可以执行以下操作:

代码语言:javascript
复制
library(caret)
trainda<-createDataPartition(iris$Sepal.Length,p=0.8,list=F)
valid_da<-iris[-trainda,]
trainda<-iris[trainda,]
ctrl<-trainControl(method="cv",number=5)
set.seed(233)
m<-train(Sepal.Length~.,data=trainda,method="rf",metric="RMSE",trControl = ctrl,verbose=F)
m1<-predict(m,valid_da)
RMSE(m1,valid_da$Sepal.Length)

结果:

代码语言:javascript
复制
[1] 0.3499783
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54722415

复制
相关文章

相似问题

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