このエラーは引き続き発生しますが、原因を特定できません。e1071 SVM:予測しようとしてエラーが発生しました
scale.defaultでエラー(NEWDATA "スケール:中心" [、FALSE =ドロップ、$スケーリングされたオブジェクト]、中心 =オブジェクト$ x.scaleの$、 '中央' の長さの数に等しくなければなりません
「X」の列は、私は、デフォルトのアイリスデータセットを使用して、そしてここに私のコードのすべてですよ。それは、ペアワイズ法を使用してマルチクラス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](http://stackoverflow.com/questions/22149280/support-vector-machine-works-on-training-set-but-not-on-test-set-in-r-using -e10)リンクを使用すると、いくつかの洞察が得られるかもしれません。 – steveb