这个函数有三个参数,其中
-training_instance_matrix:训练样本的特征,如果有m个样本,每个样本特征是n维,则为m x n的矩阵(类型必须为double)。
libsvmtrain函数返回训练好的SVM分类器模型model是一个结构体,包含以下成员:
-s SVM类型(默认0);
-d 核函数中的degree设置(针对多项式核函数)(默认3);
-r 核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
-totalSV: 表示支持向量的总数。
-Label: 表示数据集中类别的标签,比如二分类常见的1和-1。
-ProbB: 使用-b参数时用于概率估计的数值,否则为空。
-sv_coef: 表示每个支持向量在决策函数中的系数。
另外,如果在训练中使用了-v参数进行交叉验证时,返回的不是一个模型,而是交叉验证的分类的正确率或者回归的均方根误差。
网格参数寻优函数(分类问题):SVMcgForClass
输入:
train:训练集,格式要求与svmtrain相同。
gmin,gmax:RBF核参数g的变化范围,即在[2^gmin,2^gmax]范围内寻找最佳的RBF核参数g,默认值为gmin=-8,gmax=8,即默认RBF核参数g的范围是[2^(-8),2^8]。
cstep,gstep:进行参数寻优是c和g的步进大小,即c的取值为2^cmin,2^(cmin+cstep),…,2^cmax,,g的取值为2^gmin,2^(gmin+gstep),…,2^gmax,默认取值为cstep=1,gstep=1。
输出:
bestc:最佳的参数c。
网格参数寻优函数(回归问题):SVMcgForRegress
其输入输出与SVMcgForClass类似,这里不再赘述。
libsvm使用误区:
(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。
b) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。
(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。
(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数
