我有一个N个例子x 765特征的矩阵。为此,每个例子都有一个N个标签的矢量。
我正在尝试使用SVM对它们进行分类并进行预测。当我使用手动半分割将整个数据分成训练和验证时,它在一个实例中工作:
indicator<-1:(length(idx)/2)
training <- idx[indicator]
test<-idx[-indicator]
但是,如果我尝试使用以下方法将循环中每个类的一半随机化:
indicator<-sample(idx, trunc(length(idx)/2))
training <- idx[indicator]
test<-idx[-indicator]
调用时出现以下错误:
svm.model <- svm(x=training,y=trainlabels)
Error in predict.svm(ret, xhold, decision.values = TRUE) : Model is empty!
矩阵的尺寸和标签的长度非常精细,svm()调用是停止工作的原因。
trainlabels是标签的“因素”,svmTraining是矩阵的一个子集。
答案 0 :(得分:5)
我曾经遇到过这个错误,原因是所有的标签都是一样的,如果没有的话 如果指定,svm会尝试执行两级分类。 如果,比如90%的标签是A而你随机选择了一半,你可能只会获得 如。