无法在R中的randomForest()函数中进行子集

时间:2018-03-13 00:24:25

标签: r random-forest training-data

我正在尝试在R中使用randomForest函数。对于我的分析,我有一个包含151个观测值的数据集。我使用70/30分割来获得105次训练和46次测试。

我正在使用子集参数来指示训练数据集观察。但是,当我使用“rf $ predict”命令时,我看到该模型使用了整个数据集(151个观测值,而不仅仅是训练数据集。

此外,当我使用“predict()”函数提供测试数据时,模型使用150个观察值进行预测。但是,测试只有46个观察结果。

你能告诉我我的错误吗?我想仅使用训练数据集来拟合模型,并仅在测试数据集上进行预测。提前谢谢!

数据可在此处获取:

https://archive.ics.uci.edu/ml/datasets/teaching+assistant+evaluation https://archive.ics.uci.edu/ml/machine-learning-databases/tae/

代码:

library("randomForest")
library(caTools)
# Importing tae.csv 
setwd("C:\\Users\\Saulat Majid\\Documents\\MSDataAnalytics\\DSU\\10 STAT 702 Modern Applied Statistics II - Saunders\\HW5")
tae <- read.table(file = "tae.csv", header = FALSE, sep = ",")
head(tae)

colnames(tae) <- c("N_Speaker", "Instructor", "Course", "Summer", "C_Size", "Class")

# Numerical Summary of tae dataset
head(tae)
str(tae)
summary(tae)

# Converted categorical variables into factor
tae$Class <- as.factor(tae$Class)
tae$N_Speaker <- as.factor(tae$N_Speaker)
tae$Instructor <- as.factor(tae$Instructor)
tae$Summer <- as.factor(tae$Summer)
tae$Course <- as.factor(tae$Course)
str(tae)

# Splitting data into train and test
tae.Split <- sample.split(tae$Class, SplitRatio = 0.7)
table(tae.Split)
tae.train <- tae[tae.Split,]
tae.test  <- tae[!tae.Split,]
dim(tae)
dim(tae.train)
dim(tae.test)

rf <- randomForest(Class ~ N_Speaker + Summer + C_Size, data = tae, subset = tae.Split)
rf$predicted

predict(object = rf,
        newdata = tae[-tae.Split,],
        type = "response")

0 个答案:

没有答案