24小时热门版块排行榜    

查看: 2147  |  回复: 42
当前主题已经存档。
【有奖交流】积极回复本帖子,参与交流,就有机会分得作者 damojinghong 的 470 个金币
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

damojinghong

至尊木虫 (知名作家)

娴 囩 嘢 鹤 唻 厾 呒 琮

[交流] 【求助】Svm分类 找老师带新人??

最近在进行数据处理,用到SVM但是我确实没有接触过matlab,在网上下了个osu-svm工具箱,里面有demo(应该是演示吧),我就按照demo一步一步,输入命令和数据,然后计算出结果。有LinearSVC,PolySVC,RbfSVC三种,我都按照demo做了计算。
代码分别如下:
linera
引用回帖:
load train1.txt
load lable.txt
size(train1)
size(lable)
[AlphaY, SVs, Bias, Parameters, nSV, nLabel] = LinearSVC(train1,lable);
save SVMClassifier AlphaY SVs Bias Parameters nSV nLabel;
load pre1.txt
load lablepr.txt
size(pre1)
size(lablepr)
[ClassRate, DecisionValue, Ns, ConfMatrix, PreLabels]= SVMTest(pre1,lablepr, AlphaY, SVs, Bias,Parameters, nSV, nLabel);
ConfMatrix
classrate=0.93333

poly
引用回帖:
load train1.txt
load lable.txt
size(train1)
size(lable)
Degree = 5;
[AlphaY, SVs, Bias, Parameters, nSV, nLabel] = PolySVC(train1,lable, Degree);
save SVMClassifier AlphaY SVs Bias Parameters nSV nLabel;
load pre1.txt
load lablepr.txt
size(pre1)
size(lablepr)
[ClassRate, DecisionValue, Ns, ConfMatrix, PreLabels]= SVMTest(pre1,lablepr, AlphaY, SVs, Bias,Parameters, nSV, nLabel);
ConfMatrix
classrate=0.9

rbf
引用回帖:
load train1.txt
load lable.txt
size(train1)
size(lable)
Gamma = 2;
[AlphaY, SVs, Bias, Parameters, nSV, nLabel] = RbfSVC(train1,lable, Gamma);
save SVMClassifier AlphaY SVs Bias Parameters nSV nLabel;
load pre1.txt
load lablepr.txt
size(pre1)
size(lablepr)
[ClassRate, DecisionValue, Ns, ConfMatrix, PreLabels]= SVMTest(pre1,lablepr, AlphaY, SVs, Bias,Parameters, nSV, nLabel);
ConfMatrix
classrate=0.2

不知道这个到底算不算支持向量机分类,好像还有libsvm分类的,里面的代码和我的不一样,而且我的太简单,是不是不对啊?
train1是训练集,lable是训练集标签,这个标签与实际分类一致。
pre1是测试集,lablepr是测试集标签,这个标签也与实际分类一致。
如果我所做的没有错 为什么采用rbf时候 准确度那么低?

具体数据和工具箱我上传,请高人不要觉得我的问题幼稚或者荒唐,请不吝赐教,小弟先在这里谢过!http://www.namipan.com/d/data.ra ... 43a37be6a64df681500

希望找到一个老师,可以指导我一下,不会很麻烦的,希望高人一定现身指点!!

[ Last edited by damojinghong on 2010-1-15 at 15:45 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wolfpl

木虫 (小有名气)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
adu886886(金币+1,VIP+0):谢谢提供意见 1-16 15:48
damojinghong(金币+100,VIP+0):多谢朋友细心讲解,希望以后能向您请教! 1-20 16:06
实现SVM的工具有很多,如LIBSVM,SVMlight,SimpleSVM....具体可以参考http://en.wikipedia.org/wiki/Support_vector_machine中的介绍。不过本人认为其中Libsvm是一个操作简单、易于使用、快速有效的通用SVM 软件包,它是台湾大学林智仁(Chih-Jen Lin)博士等开发设计的,他的主页:http://www.csie.ntu.edu.tw/~cjlin/index.html,上面有很多关于libsvm的资料、工具和示例数据。
SVM的原理部分看看一两篇文章就能明白,其中中文文献张学工老师的文章觉得很不错;外文文献当然就看vapnik他老人家的呢。
具体LIBSVM的使用可以参考如下文章 http://luzhenbo.88uu.com.cn/Inte ... roduction_study.htm,或者参考下载的libsvm包里readme.txt,都有详细的使用说明。

SVM的训练预测过程可以简单的归纳为以下几个过程:

   1. 收集数据。相关性分析(p卡方检验),特征选择(主成份分析)。
   2. 归一化数据。就是根据实际要求,将数据的取值范围转化为统一的区间如[a,b],a,b为整数。
   3. 利用抽样技术将数据集分为训练集和测试集。抽样技术有分层抽样,简单抽样(等概率抽样)
   4. 将数据转化为软件(接口)所支持的格式。就libsvm(c++,java)来说,需要将数据转化为libsvmm所要求的格式。
   5. 选择核函数,可以优先考虑RBF。
   6. 对训练集利用交叉验证法选择最好的参数C和r(rbf核函数中的参数gama)。可以通过网格法寻找出最优的参数,注意一次交叉验证得到一个参数对所对应的模型精度,网格法目的就是找到使得模型精度达到对高的参数对(这里的参数对可能不止两个,有可能也有其他的),可以使用一些启发式的搜索来降低复杂度,虽然这个方法笨了点,但是它能得到很稳定的搜索结果。需要提到的这里在对训练集进行分割的时候涉及到抽样,一个较好的方法就是分层抽样。从这步可以看出其实 Cross-Validation是一种评估算法的方法。
   7. 用6中得到的参数对在整个训练集合上进行训练,从而得出模型。
   8. 利用测试集测试模型,得到精度。这个精度可以认为是模型最终的精度。当然有人会担心3步中抽样会有一定的误差,导致8得到的精度不一定是最好的,因此可以重复3-8得到多个模型的精度,然后选择最好的一个精度最为模型的精度(或者求所有精度的均值做为模型精度)。

你上面提到虽然采用rbf核函数,但预测精度还是比较低,可能就是没有做第6步,选择最好的参数gama

[ Last edited by wolfpl on 2010-1-16 at 12:53 ]
33楼2010-01-16 12:50:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 43 个回答

匿名

用户注销 (职业作家)

★ ★ ★ ★ ★
damojinghong(金币+1):谢谢参与
nono2009(金币-5,VIP+0):专业版请勿灌水! 1-15 17:52
nono2009(金币-1,VIP+0):扣回所得金币! 1-15 17:52
本帖仅楼主可见
2楼2010-01-15 17:29:54
已阅   申请仿真EPI   回复此楼   编辑   查看我的主页

匿名

用户注销 (职业作家)

拯救社会风气刺激电影市道

本帖仅楼主可见
3楼2010-01-15 17:32:10
已阅   申请仿真EPI   回复此楼   编辑   查看我的主页

匿名

用户注销 (职业作家)

拯救社会风气刺激电影市道

本帖仅楼主可见
4楼2010-01-15 17:33:09
已阅   申请仿真EPI   回复此楼   编辑   查看我的主页
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见