svm(支持向量机)全解
4.在二维坐标中绘制SVM的训练和测试结果: svcplot(X,Y,ker,alpha,bias) 其中: X - 训练样本的输入特征 Y - 训练样本的标号 ker - 核函数 alpha - SVM的求解结果 bias - SVM的偏移量 ker=‘linear’; %选择线性核函数 [nsv alpha bias]=svc(trnx,trny,ker,10); %训练SVM svcplot(trnx,trny,ker,alpha, bias); %显示分类器效果 利用SVM的Matlab工具箱进行印签提取的示例程序 tstnum=1; for i=1:size(RGB,1) for j=1:size(RGB,2) testx=double(RGB(i,j,1:2)); preY=svcoutput(trnx,trny,testx,ker,alpha,bias); tstnum=tstnum+1; if (preY==1) resIm(i,j)=255; else resIm(i,j)=0; end end end imshow(resIm); 利用SVM的Matlab工具箱进行印签提取的示例程序 三、SVM的C语言编程介绍 1.求解SVM的两个开源开发包: Libsvm: .tw/~cjlin SVM-light:http://ais.gmd.de/~thorsten/svm_light :: ... 2. 利用SVM的C语言程序直接进行分类器的训练和测试: 例: 1 1:67 2:66 3:72 4:72 5:59 6:71 7:54 8:67 9:79 -1 1:101 2:108 3:100 4:99 5:102 6:95 7:93 8:96 9:89 使用说明 训练结果 3. 利用SVM的C语言开发包编写自己的SVM分类器: svm_model *svm_train(const svm_problem *prob, const svm_parameter *param) double svm_predict(const svm_model *model, const svm_node *x) struct svm_problem{ int l; double *y; struct svm_node **x;}; struct svm_parameter{ int svm_type;int kernel_type; double degree;// for poly double gamma;// for poly/rbf/sigmoid double coef0;// for poly/sigmoid// these are for training only double cache_size; // in MB double eps;// stopping criteriadouble C; int nr_weight;int *weight_label; double* weight; // for C_SVC double nu;// for NU_SVC, ONE_CLASS, and NU_SVR double p;// for EPSILON_SVR int shrinking;// use the shrinking heuristics }; struct svm_node{ int index; double value;}; 1 1:-0.844335 2:-0.184362 3:0.046215 4:0.593243 5:0.140576 6:0.330716 7:0.172408 8:-0.105515 struct svm_model{ svm_parameter param;// parameter int nr_class;// number of classes int l;// tot