一、网络训练
%% 调用格式
model = svmtrain(train_label, train_data, ‘options’);
%% 举例
model = svmtrain(output_train, inputn, '-c 2 -g 1 -t 2');
1.train_data训练集属性矩阵
大小n*m,n表示样本数,m表示属性数目(维数),数据类型double;
2.train_label训练集标签
大小n*1,n表示样本数,数据类型double ;
3.options参数选项
(1)-s svm类型:设置SVM模型类型(默认0)
0 -- C-SVC 支持向量分类机,C_SVC采用的是0到正无穷。参数C为惩罚系数,C越大表示对错误分类的惩罚越大,适当的参数C对分类Accuracy很关键
1 -- nu-SVC nu-SVC采用的是[0,1]
2 -- one-class SVM 一类SVM:单类别-支持向量机,不需要类标号,用于支持向量的密度估计和聚类
3 -- epsilon-SVR 支持向量回归机
4 -- nu-SVR 支持向量回归机,nu-SVR能够自动计算参数
(2)-t 核函数类型:核函数设置类型(默认2)
0 -- 线性核函数: u'*v
1 -- 多项式核函数: (gamma*u'*v + coef0)^degree
2 -- RBF核函数: exp(-gamma*|u-v|^2)
3 -- sigmoid核函数: tanh(gamma*u'*v + coef0)
4 -- 预定义核函数(指定核矩阵)
(3)-d degree:
核函数中的degree设置(针对多项式核函数)(默认3)
(4)-g gama:
核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/num_features,即属性数目的倒数)
(5)-r coef0:
核函数中的coef0设置(针对多项式/sigmoid核函数)(默认0)
(6)-c cost:
设置C-SVC,epsilon-SVR和nu-SVC的参数(损失函数)(默认1)
(7)-n nu:
设置nu-SVC,one-class SVM和nu-SVR的参数(默认0.5) (8)-p
epsilon:
设置epsilon-SVR中损失函数epsilon的值(默认0.1)
(9)-m cachesize:
设置cache内存大小,以MB为单位(默认100)
(10)-e eps:设置允许的终止判据(默认0.001)
(11)-h shrinking:是否使用启发式,0或1(默认1)
(12)-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
二、网络测试
%% 调用格式
[predict_label, accuracy/mse, dec_value] = svmpredict(test_label, test_data,model);
1.predict_label
预测的测试集的标签,数据类型double;
2.accuracy/mse
(1)是一个3*1的列向量
(2)第一个数代表分类准确率(分类问题使用)
(3)第二个代表mse(回归问题使用)
(4)第三个数表示平方相关系数(回归问题使用)
3.dec_value
(1)是决策值
(2)只是在多分类的时候才会返回这个值,二分类的时候没有
(3)它的矩阵大小是预测数据样本个数*类别数