每日签到积分充值书码绑定

MATLAB技术论坛

 找回密码
 注册帐号

QQ登录

只需一步,快速开始

查看: 20945|回复: 1447

[教程] (更新libsvm-faruto版本归来)libsvm-3.1-[FarutoUltimate3.1Mcode]     [复制链接]

官方团队

faruto不知何许人也~

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

签到天数: 9 天

[LV.3]偶尔看看II

UID
18677
主题
233
帖子
4731
积分
13679
威望
197
贝壳
3720
贡献
6722

管理团队 技术小组

发表于 2011-6-10 15:31:10 |显示全部楼层 | 百度  谷歌 |
本帖最后由 faruto 于 2011-8-3 17:28 编辑

【工具箱】

libsvm-3.1-[FarutoUltimate3.1Mcode]

其他名称:libsvm-faruto版本,libsvm-faruto加强工具箱,libsvm-farutoUltimate版本

【更新说明】

libsvm-faruto版本好久都没有更新了,近期我将代码重新整理了一下,看到注释中上次更新代码的时间是2010.01.17,才发现libsvm-faruto版本已经一年多没有添加进行更新,看着自己以前编写的一行行代码,心中不免想起过往那些逝去的岁月,想起过往的那些人,煽情的不多说,此次更新主要内容如下:

1.基于目前的最新的libsvm-3.1编写。
2.对原来的部分代码进行了重新优化。
3.添加ClassResult.m函数,方便给出各种分类准确率,以及给出判别函数的权值w、偏置b、支持向量在原始训练集中的位置索引以及alpha系数。
给出这个函数的目的是方便大家,个人感觉这个函数会对相关朋友有很大帮助。
4.重新编写说明文档TutorialForFarutoUltimate3.1.pdf

由于libsvm回归不支持多输出,本来还想实现libsvm的多输出(lssvm支持多输出,但我详细研究了一下lssvm也就是一维一维的进行回归实现的多输出,libsvm完全可以仿照这种形式实现多输出),但后来又犯懒,因为实在没有技术含量,就搁置了。如果实现有朋友需要就在后期的版本更新中添加吧。另外给大家做个预告,暑假期间我会制作一系列的关于libsvm工具箱和lssvm工具箱的视频,完全免费下载。之前在我的那个专辑期刊中做过预告,这里权当造势啦。O(∩_∩)O

ClassResult.m源代码
  1. function CR = ClassResult(label, data, model, type)
  2. % by faruto
  3. % last modified 2011.06.09
  4. % type 1:输入的data为训练节
  5. %      2:输入的data为测试集
  6. % 当输入的data为训练集时,需要事先在外部将标签转换为1,-1
  7. %%
  8. if nargin < 4
  9.     type = 1;
  10. end
  11. CR = struct();
  12. %%
  13. [plabel,acc,dec] = svmpredict(label,data,model);
  14. %% some info of the data set
  15. disp('===some info of the data set===')
  16. str = sprintf('#class is %d',model.nr_class);
  17. disp(str)
  18. lstr = ['类别标签为 '];
  19. for i = 1:size(model.Label,1)
  20.     lstr = [lstr, num2str(model.Label(i)),' '];
  21. end
  22. disp(lstr);
  23. if type == 1
  24.     str = ...
  25.         sprintf('支持向量数目 %d,所占训练集样本数目比例 %g%% (%d/%d)',model.totalSV,model.totalSV/size(data,1)*100,model.totalSV,size(data,1));
  26.     disp(str);
  27.     ratio = model.totalSV/size(data,1)*100;
  28.     if ratio >= 80
  29.         disp('Tips:支持向量数目所占比例过大(>=80%),可以考虑重新优化参数')
  30.     end
  31. else
  32.     str = ...
  33.         sprintf('支持向量数目 %d',model.totalSV);
  34.     disp(str);   
  35. end
  36. %% 各种分类准确率
  37. disp('===各种分类准确率===');
  38. CR.accuracy = zeros(1,size(model.Label,1)+1);
  39. CR.accuracy(1) = sum(plabel == label)/numel(label);
  40. str = ...
  41.     sprintf('整体分类准确率 = %g%% (%d/%d)',CR.accuracy(1)*100,sum(plabel == label),numel(label));
  42. disp(str)
  43. for i = 1:numel(model.Label)
  44.     p = 0;
  45.     n = 0;
  46.     for run = 1:numel(label)
  47.         if label(run) == model.Label(i)
  48.             if plabel(run) == model.Label(i)
  49.                 p = p + 1;
  50.             else
  51.                 n = n + 1;
  52.             end
  53.         end
  54.     end
  55.     CR.accuracy(i+1) = p/(p+n);
  56.     str = ...
  57.         sprintf('第 %d 类分类准确率 = %g%% (%d/%d)',model.Label(i),CR.accuracy(i+1)*100,p,p+n);
  58.     disp(str);
  59. end
  60. %%
  61. if type == 1
  62.     [tmp index]=ismember(model.SVs,data,'rows');
  63.     CR.SVlocation = index;
  64. end
  65. %%
  66. if numel(model.Label) == 2 && type == 1
  67.     CR.b = -model.rho;
  68.     CR.w = model.sv_coef;
  69.     CR.alpha = zeros(size(model.sv_coef,1),1);
  70.     for i = 1:size(model.sv_coef,1)
  71.         CR.alpha(i) = CR.w(i)/label(CR.SVlocation(i));
  72.     end
  73. end
复制代码
ClassResult.m函数测试代码
  1. %% ClassResult_test
  2. % by faruto
  3. %% a litte clean work
  4. tic;
  5. close all;
  6. clear;
  7. clc;
  8. format compact;
  9. %%
  10. % load wine_test;
  11. % label = train_data_labels;
  12. % data = train_data;

  13. load heart_scale;
  14. data = heart_scale_inst;
  15. label = heart_scale_label;

  16. model = svmtrain(label,data);
  17. %%
  18. type = 1;
  19. CR = ClassResult(label, data, model, type)

  20. %%
  21. toc;
复制代码
测试结果
  1. Accuracy = 86.6667% (234/270) (classification)
  2. ===some info of the data set===
  3. #class is 2
  4. 类别标签为 1 -1
  5. 支持向量数目 132,所占训练集样本数目比例 48.8889% (132/270)
  6. ===各种分类准确率===
  7. 整体分类准确率 = 86.6667% (234/270)
  8. 第 1 类分类准确率 = 80.8333% (97/120)
  9. 第 -1 类分类准确率 = 91.3333% (137/150)
  10. CR =
  11.       accuracy: [0.8667 0.8083 0.9133]
  12.     SVlocation: [132x1 double]
  13.              b: -0.4245
  14.              w: [132x1 double]
  15.          alpha: [132x1 double]
  16. Elapsed time is 0.023713 seconds.
  17. >>
复制代码
【工具箱下载】

游客,如果您要查看本帖隐藏内容请回复

2.jpg


【说明文档下载】

游客,如果您要查看本帖隐藏内容请回复

1.jpg

已有 22 人评分威望 贝壳 贡献 收起 理由
general1987 + 1 + 3 感谢您分享自己珍贵的资料
lalagjp + 1 + 3
carol_wei + 1 + 3 学习了
stonezhou2084 + 1 + 2
Just丶萧瑟为你 + 1

总评分: 威望 + 5  贝壳 + 23  贡献 + 47   查看全部评分

高中

军师

Rank: 4Rank: 4

签到天数: 14 天

[LV.3]偶尔看看II

UID
60928
主题
9
帖子
201
积分
701
威望
1
贝壳
214
贡献
419
发表于 2011-6-10 15:41:42 |显示全部楼层
敬佩faruto!!!辛苦了!

道具 举报

Rank: 2Rank: 2

签到天数: 1 天

[LV.1]初来乍到

UID
99159
主题
0
帖子
39
积分
141
威望
0
贝壳
46
贡献
100
发表于 2011-6-10 15:42:55 |显示全部楼层
MATLAB技术论坛"有偿编程担保制度" "技术团队资格认证""官方有偿编程团队",保证您有偿编程安全。
期待您能编写一个针对有偏数据集评估准则如AUC等的参数寻优函数

道具 举报

官方团队

faruto不知何许人也~

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

签到天数: 9 天

[LV.3]偶尔看看II

UID
18677
主题
233
帖子
4731
积分
13679
威望
197
贝壳
3720
贡献
6722

管理团队 技术小组

发表于 2011-6-10 15:43:55 |显示全部楼层
hotonwu 发表于 2011-6-10 15:41
敬佩faruto!!!辛苦了!

多谢您的支持~

道具 举报

官方团队

faruto不知何许人也~

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

签到天数: 9 天

[LV.3]偶尔看看II

UID
18677
主题
233
帖子
4731
积分
13679
威望
197
贝壳
3720
贡献
6722

管理团队 技术小组

发表于 2011-6-10 15:45:36 |显示全部楼层
MATLAB技术论坛"有偿编程担保制度" "技术团队资格认证""官方有偿编程团队",保证您有偿编程安全。
aoshuang 发表于 2011-6-10 15:42
期待您能编写一个针对有偏数据集评估准则如AUC等的参数寻优函数

关于有偏数据集(un-balanaced label data)相关问题的参数寻优,我一直都列入计划更新中,只是我想更加系统化弄一下。O(∩_∩)O

道具 举报

Rank: 2Rank: 2

签到天数: 1 天

[LV.1]初来乍到

UID
99159
主题
0
帖子
39
积分
141
威望
0
贝壳
46
贡献
100
发表于 2011-6-10 15:50:49 |显示全部楼层
回复 faruto 的帖子

哈哈 太好了 希望我这篇文章完成之前能看到您的程序更新 嘻嘻~~

道具 举报

官方团队

faruto不知何许人也~

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

签到天数: 9 天

[LV.3]偶尔看看II

UID
18677
主题
233
帖子
4731
积分
13679
威望
197
贝壳
3720
贡献
6722

管理团队 技术小组

发表于 2011-6-10 16:14:34 |显示全部楼层
MATLAB技术论坛"有偿编程担保制度" "技术团队资格认证""官方有偿编程团队",保证您有偿编程安全。
aoshuang 发表于 2011-6-10 15:50
回复 faruto 的帖子

哈哈 太好了 希望我这篇文章完成之前能看到您的程序更新 嘻嘻~~

什么文章?

道具 举报

Rank: 3

签到天数: 10 天

[LV.3]偶尔看看II

UID
14224
主题
4
帖子
126
积分
590
威望
0
贝壳
215
贡献
467
发表于 2011-6-10 22:11:13 |显示全部楼层

道具 举报

Rank: 4Rank: 4

签到天数: 71 天

[LV.6]常住居民II

UID
110566
主题
0
帖子
153
积分
633
威望
0
贝壳
281
贡献
373
发表于 2011-6-11 07:17:59 |显示全部楼层
MATLAB技术论坛"有偿编程担保制度" "技术团队资格认证""官方有偿编程团队",保证您有偿编程安全。
楼主发帖辛苦了,谢谢楼主分享!
昨天发现MATLAB函数百科很赞,中文函数帮助果然强大哦

道具 举报

官方团队

faruto不知何许人也~

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

签到天数: 9 天

[LV.3]偶尔看看II

UID
18677
主题
233
帖子
4731
积分
13679
威望
197
贝壳
3720
贡献
6722

管理团队 技术小组

发表于 2011-6-11 10:43:19 |显示全部楼层
myisland 发表于 2011-6-10 22:11
灰常感谢,faruto,拜你为师……

不客气

道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

关闭

站长推荐

热烈庆祝Mathworks中国成立5周年系列活动
热烈庆祝Mathworks中国成立5周年系列活动
五年前的今天,Mathworks中国成立,到现在MATLAB在中国研究者业内已经具有相当的规模和影响了,我们可喜的看到:现在的高校、科研机构越来越多地购买正版MATLAB软件,MATLAB的推广在中国逐步开展起来。

查看 »

网站简介 | 发展历程 | 特色业务 | 管理团队 | 免责声明 | 广告服务 | 联系我们 | 付款方式 | 友情链接 | 帮助中心

商务合作:455681698   服务邮箱:matlabsky@gmail.com   支付宝:yuthreestone@163.com

合作站点:数模联盟 函数百科 网上商城   出版单位:北航出版社 道然科技   开发平台:Discuz! X2

CopyRight © 2008-2012 迈粉网 ( 陕ICP备08102094号 ) All Rights Reserved

排行热榜|网站地图|手机浏览|管理邮箱||     

GMT+8, 2012-5-19 05:42 , Processed in 0.323700 second(s), 34 queries , Gzip On, Xcache On.

回顶部