我正在尝试在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")