我正在尝试在具有100个维度的数据上训练线性SVM。我有80个培训实例。我在MATLAB中使用fitcsvm
函数训练SVM,并在训练数据上使用predict
检查函数。当我使用SVM对训练数据进行分类时,所有数据点仅被分类为一个类。
SVM = fitcsvm(votes,b,'ClassNames',unique(b)');
predict(SVM,votes);
这将输出为全0,对应于第0类。 b
包含1和0,表示每个数据点所属的类。
使用的数据,即矩阵votes
和向量b
,给出以下link
答案 0 :(得分:2)
确保使用非线性内核,例如高斯内核,并调整内核的参数。作为一个起点:
SVM = fitcsvm(votes,b,'KernelFunction','RBF', 'KernelScale','auto');
bp = predict(SVM,votes);
表示你应该在训练集和测试集中分割你的集合,否则你可能会过度拟合