【问题标题】:tune() function e1071 / libsvm -error with rparttune() function e1071 / libsvm -error with rpart
【发布时间】:2012-12-04 03:09:12
【问题描述】:

我正在尝试调整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

【问题讨论】:

  • 您的示例不可重现,因为您的数据不可用。
  • 我更改了设置。它现在应该可用。对不起

标签: r rpart


【解决方案1】:

您必须检查您正在使用的分类器的预测输出。 tune() 期望(用于分类)收到以下之一:

(is.logical(true.y) || is.factor(true.y)) && (is.logical(pred) || is.factor(pred) || is.character(pred))

例如,rpart 的预测会生成一个矩阵作为输出。你可以试试svm,它可以处理这个问题,或者尝试只提供两个类。

【讨论】:

    猜你喜欢
    • 2012-12-30
    • 2018-03-08
    • 2022-12-26
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2016-12-30
    • 2013-09-11
    相关资源
    最近更新 更多