我使用rpart制作分类树。数据有10列,都经过适当标记。这些列中的五列包含诸如星期几之类的信息,其形式为“Wed”,其他五列包含数值。
我可以使用Rpart成功创建一个树,但是当我尝试运行数据的测试集,甚至是创建树的训练集时,我得到一堆警告,说包含字符的变量已更改为一个因子,然后是一个错误,表示那些相同的变量是用不同的类型指定的。
任何人都知道如何解决这个问题?
我的相关代码应该是
library(rpart)
#read data into info
info <- data.frame(info)
set.seed(30198)
train_ind <- sample(1:2000, 1500)
training_data_info <- info[train_ind, ]
test_data_info <- info[-train_ind, ]
training_data_info <- data.frame(training_data_info)
test_data_info <- data.frame(test_data_info)
tree <- rpart(info ~ ., data = training_data_info, method = "class")
info.test.fit <- predict(tree, newdata=test_data_info) #this is where it goes wrong
答案 0 :(得分:1)
您无法在rpart
拟合中使用字符向量。你必须将它们编码为因子。代码为您完成此操作,但是您遇到的问题是,测试数据完全可能与用于拟合树的训练数据具有不同的levels
集。
错误来自于使用这两行:
training_data_info <- data.frame(training_data_info)
test_data_info <- data.frame(test_data_info)
这些是冗余的,对象已经是数据帧。所有这一切都是为了从训练或测试数据集中缺少的整个数据集中删除这些级别。这就是错误的来源。尝试没有这两行,你应该好好去。