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