我正在尝试调整rpart
。我已将数据拆分为训练和简历集。 tune.rpart
便利功能似乎没有指定cv集的方法。所以我使用常规的tune()
函数。
我的数据集中有595个潜在变量,因此我不想使用公式指定。我这样做时出现以下错误
Error in tune(rpart, train.x = trainset[, -1], train.y = trainset[, 1], :
Dependent variable has wrong type!
In addition: Warning message:
In if (y) ans$y <- Y :
the condition has length > 1 and only the first element will be used
代码:
load('train.dat')
load('cv.dat')
trainset$class<-factor(trainset$class)
cvset$class<-factor(cvset$class)
rpart.tune<-tune(rpart,train.x= trainset[,-1], train.y=trainset[,1],
validation.x=cvset[,-1], validation.y=cvset[,1],
ranges = list(
cp = c(0.002,0.005,0.01,0.015,0.02,0.03)),
tunecontrol = tune.control(sampling = "fix"))
数据可从以下网址获得: https://docs.google.com/folder/d/0B2_rKFnvrjMAM3FGbnFvZm5laUk/edit
答案 0 :(得分:0)
您必须检查您正在使用的分类器的预测输出。 tune()
期望(用于分类)收到以下内容之一:
(is.logical(true.y) || is.factor(true.y)) && (is.logical(pred) || is.factor(pred) || is.character(pred))
例如,rpart
的预测产生矩阵作为输出。您可以尝试处理该权限的svm
或尝试仅提供两个类。