模型为空,e1071包中的SVM

use*_*046 5 r classification svm

我有一个N个例子x 765特征的矩阵.为此,每个示例都有一个N个标签的向量.

我正在尝试使用SVM对它们进行分类并进行预测.当我使用手动半分割将整个数据分成训练和验证时,它在一个实例中起作用:

indicator<-1:(length(idx)/2)
training <- idx[indicator]
test<-idx[-indicator]
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用以下方法将循环中每个类的一半随机化:

indicator<-sample(idx, trunc(length(idx)/2))
training <- idx[indicator]
test<-idx[-indicator]
Run Code Online (Sandbox Code Playgroud)

调用时出现以下错误:

svm.model <- svm(x=training,y=trainlabels)

Error in predict.svm(ret, xhold, decision.values = TRUE) : Model is empty!
Run Code Online (Sandbox Code Playgroud)

矩阵的尺寸和标签的长度非常精细,svm()调用是停止工作的原因.

trainlabels是标签的"因素",svmTraining是矩阵的子集.

小智 5

我有一次错误,原因是所有标签都是相同的,如果没有指定,svm会尝试执行两级分类.如果,例如90%的标签是A而你随机选择了一半,那么你很可能只得到As.