libsvm


model = svmtrain(label,data);

[predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model)




[cpp]  view plain  cop
  1. data = [176 70;  
  2. 180 80;  
  3. 161 45;  
  4. 163 47];  
  5. label = [1;1;-1;-1];  
  6.   
  7. model = svmtrain(label,data);  
  8.   
  9. testdata = [190 85];  
  10. testdatalabel = -1;  
  11.   
  12. [predictlabel,accuracy] = svmpredict(testdatalabel,testdata,model);  
  13. predictlabel  

运行结果如下:


[plain]  view plain  copy
  1. Accuracy = 0% (0/1) (classification)  
  2. predictlabel =  
  3.      1  


好,通过上面的讲解,不知道诸位看官对于利用libsvm进行分类是否有了一定了解【谁要是这么通俗的例子还搞不清楚怎么使用libsvm进行分类,那我真无语啦】,下面使用libsvm工具箱本身带的测试数据heart_scale来实际进行一下测试:


[plain]  view plain  copy
  1. %% HowToClassifyUsingLibsvm  
  2. % by faruto @ faruto's Studio~  
  3. % http://blog.sina.com.cn/faruto  
  4. % Email:faruto@163.com  
  5. % http://www.matlabsky.com  
  6. % http://www.mfun.la  
  7. % http://video.ourmatlab.com  
  8. % last modified by 2010.12.27  
  9. %% a litte clean work  
  10. tic;  
  11. close all;  
  12. clear;  
  13. clc;  
  14. format compact;  
  15. %%   
  16.   
  17. % 首先载入数据  
  18. load heart_scale;  
  19. data = heart_scale_inst;  
  20. label = heart_scale_label;  
  21.   
  22. % 选取前200个数据作为训练集合,后70个数据作为测试集合  
  23. ind = 200;  
  24. traindata = data(1:ind,:);  
  25. trainlabel = label(1:ind,:);  
  26. testdata = data(ind+1:end,:);  
  27. testlabel = label(ind+1:end,:);  
  28.   
  29. % 利用训练集合建立分类模型  
  30. model = svmtrain(trainlabel,traindata,'-s 0 -t 2 -c 1.2 -g 2.8');  
  31.   
  32. % 分类模型model解密  
  33. model  
  34. Parameters = model.Parameters  
  35. Label = model.Label  
  36. nr_class = model.nr_class  
  37. totalSV = model.totalSV  
  38. nSV = model.nSV   
  39.   
  40. % 利用建立的模型看其在训练集合上的分类效果  
  41. [ptrain,acctrain] = svmpredict(trainlabel,traindata,model);  
  42.   
  43. % 预测测试集合标签  
  44. [ptest,acctest] = svmpredict(testlabel,testdata,model);  
  45.   
  46. %%  
  47. toc;  


运行结果:


  1. model = 
  2.     Parameters: [5x1 double]
  3.       nr_class: 2
  4.        totalSV: 197
  5.            rho: 0.0583
  6.          Label: [2x1 double]
  7.          ProbA: []
  8.          ProbB: []
  9.            nSV: [2x1 double]
  10.        sv_coef: [197x1 double]
  11.            SVs: [197x13 double]
  12. Parameters =
  13.          0
  14.     2.0000
  15.     3.0000
  16.     2.8000
  17.          0
  18. Label =
  19.      1
  20.     -1
  21. nr_class =
  22.      2
  23. totalSV =
  24.    197
  25. nSV =
  26.     89
  27.    108
  28. Accuracy = 99.5% (199/200) (classification)
  29. Accuracy = 68.5714% (48/70) (classification)
  30. Elapsed time is 0.040873 seconds.
  31. >>


上面的代码基本我不想多说什么。
只是说一下参数输入的意义:

  -s svm类型:SVM设置类型(默认0)
  0 -- C-SVC
  1 --v-SVC
  2 – 一类SVM
  3 -- e -SVR
  4 -- v-SVR
  -t 核函数类型:核函数设置类型(默认2)
  0 – 线性:u'v
  1 – 多项式:(r*u'v + coef0)^degree
  2 – RBF函数:exp(-r|u-v|^2)
  3 –sigmoid:tanh(r*u'v + coef0)

-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)

-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)



更多关于libsvm 参数的说明请看
libsvm 参数说明【中英文双语版本】
http://www.matlabsky.com/thread-12380-1-1.html

还有关于建立的分类模型model

  1. model = 

  2.     Parameters: [5x1 double]

  3.       nr_class: 2

  4.        totalSV: 197

  5.            rho: 0.0583

  6.          Label: [2x1 double]

  7.          ProbA: []

  8.          ProbB: []

  9.            nSV: [2x1 double]

  10.        sv_coef: [197x1 double]

  11.            SVs: [197x13 double]
因为好多朋友反映说,比如想得到支持向量,还有model中的一些参看看不懂等等等等一些列问题,会在后面的
分类模型model解密详解中说明

利用libsvm-mat建立分类模型model参数解密【by faruto】

http://www.matlabsky.com/thread-12649-1-1.html

所以也希望诸位看官尤其是对svm感兴趣的朋友多多关注我。O(∩_∩)O~

如果对于标签设置问题您还没有搞懂可以再看看这个:
【转】Matlab中使用libsvm进行分类预测时的标签问题再次说明
http://www.matlabsky.com/thread-12396-1-1.html


更多关于SVM的东西请看:

关于SVM的那点破事[长期更新整理 by faruto]

http://www.matlabsky.com/thread-10966-1-1.html


reference:http://blog.csdn.net/timidsmile/article/details/9316743

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值