【发布时间】:2015-07-14 09:30:30
【问题描述】:
我使用下面给出的 C5.0 在 R 中构建了一个分类模型:
library(C50)
library(caret)
a = read.csv("All_SRN.csv")
set.seed(123)
inTrain <- createDataPartition(a$anatomy, p = .70, list = FALSE)
training <- a[ inTrain,]
test <- a[-inTrain,]
Tree <- C5.0(anatomy ~ ., data = training,
trControl = trainControl(method = "repeatedcv", repeats = 10,
classProb = TRUE))
TreePred <- predict(Tree, test)
训练集具有 -examcard, coil_used, anatomy_region, bodypart_anatomy and anatomy(目标类)等特征。所有特征都是分类变量。一共有10k个奇数值,我把数据分为训练数据和测试数据。学习者在以 70:30 的比例划分的 training 和 test 集上表现出色,但是当我为测试集提供以下给出的新值时,问题就来了:
TreePred <- predict(Tree, test_add)
这里,test_add 包含已经存在的测试集和一组新值,在执行时学习器无法对新值进行分类并抛出以下错误:
Error in model.frame.default(object$Terms, newdata, na.action = na.action, : factor examcard has new levels
我尝试使用以下方法将新因子水平与现有因子水平合并:
Tree$xlevels[["examcard"]] <- union(Tree$xlevels[["examcard"]], levels(test_add$examcard))
但是,这并没有多大帮助,因为代码执行时显示以下消息并且没有产生任何富有成效的结果:
predict code called exit with value 1
特征考试卡在分类中占有重要地位,因此不容忽视。如何对这些值集进行分类?
【问题讨论】:
标签: r classification predict training-data test-data