我一直在尝试使用iris数据集,虽然我已经让svm从e1071库中工作,但当我试图让tune工作时,我总是得到一个'variable lengths‘错误:
library(e1071)
data <- data.frame(iris$Sepal.Width,iris$Petal.Length,iris$Species)
svm_tr <- data[sample(nrow(datasvm), 100), ] #sample 100 random rows
tuned <- tune(svm, svm_tr$iris.Species~.,
data = svm_tr[1:2],
kernel = "linear",
ranges = list(cost=c(.001,.01,.1,1,10,100)))我已经检查了svm_tr[1:2]中每一列的长度,它们的长度是相同的。我知道该函数不直接接受数据帧,但也许我遗漏了什么?
发布于 2017-02-21 07:26:08
我可以让它与以下命令一起工作:
tune(svm, iris.Species ~ ., data = svm_tr[1:3],
kernel = "linear", ranges = list(cost=c(.001,.01,.1,1,10,100)))如果是公式接口,就不应该使用$引用变量,因为所有必需的变量都来自data=参数指定的对象。请注意,我还将1:2改为data=svm_tr[1:3],以便包含iris.Species列。
https://stackoverflow.com/questions/42355491
复制相似问题