【发布时间】:2016-07-26 06:24:53
【问题描述】:
我不断收到这个错误,我不知道为什么。
scale.default(newdata[, object$scaled, drop = FALSE], center = object$x.scale$"scaled:center", : 'center' 的长度必须等于 'x' 的列数
我正在使用默认的 iris 数据集,这是我的所有代码。这是使用成对方法实现多类 SVM 的尝试。
# pass in the dataframe & the number of classes
multiclass.svm <- function(data) {
class.vec = data[,length(data)]
levels = levels(class.vec)
pair1 <- data[which(class.vec == levels[1]),]
pair1 <- droplevels(pair1)
pair2 <- data[which(class.vec == levels[length(levels)]),]
pair2 <- droplevels(pair2)
pairs = list(rbind(pair1, pair2))
# print(pairs)
for(i in 2:length(levels)){
L1 <- data[which(class.vec == levels[i-1]),]
L1 <- droplevels(L1)
L2 <- data[which(class.vec == levels[i]),]
L2 <- droplevels(L2)
pair <- list(rbind(L1, L2))
pairs <- c(pairs, pair)
}
# now we construct our (n choose 2) binary models
models = list()
for(pair in pairs){
classifier = pair[,length(pair)]
p.svm = svm(formula=classifier~., data=pair)
models = c(models, list(p.svm))
}
for(model in models){
test = iris[1,]
print(predict(model, test))
}
return(models)
}
测试/使用:
> h = multiclass.svm(iris)
Show Traceback
Rerun with Debug
Error in scale.default(newdata[, object$scaled, drop = FALSE], center = object$x.scale$"scaled:center", :
length of 'center' must equal the number of columns of 'x'
>
非常感谢任何帮助...我发现有关此主题的其他一些问题无济于事。谢谢。
【问题讨论】:
-
查看this链接,它可能会提供一些见解。