matlab 林智仁,机器学习:林智仁libsvm 工具箱 在matlab下的应用总结

简单介绍一下机器学习中的libsvm

libsvm工具箱在matlab下的安装

libsvm工具箱在matlab下的应用

libsvm的实际应用

小结

一、机器学习中的libsvm介绍

支持向量机(SUPPORT VECTOR MACHINE),是非常强大且流行的算法,在一些情况下,能面向一些复杂的非线性问题提供比逻辑回归或神经网络要更加简洁的解决方案。

下面具体讲一下SVM

19cec7cdba328b91f5d4dc4355092371.png 

e160c0873c92bfd1bdd4182d29af4834.png

ab6f50cf08236427dca54ee2c2bf67d4.png 

065f620f17c47472f17e912e541d20ee.png

LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。

下面一个网站里面是大牛写的关于libsvm的一些东西,可以看看 关于libsvm的那点破事

二、libsvm在matlab下的安装

1、首先下载libsvm工具箱

2、接着是将下载的工具箱安装

将libsvm-mat所在工具箱添加到matlab工作搜索目录

(File ——》

Set Path… ——》

Add with Subfolders…);

选择编译器(mex -setup);

编译文件(make)。

详细的步骤讲解请看 LIBSVM 在matlab下的安装

这里我只说我遇到的问题,在选择编译器的时候不管是 y还是n 都找不到自己所安装的编译器,有可能是安装顺序的问题,我所解决的方法是,讲编译器和matlab卸载,然后重新安装,重安装的时候注意先安装编译器,再安装matlab

在编译文件make的时候出现找不到文件,需要进入到libsvm-master>matlab 中再make就可以了

三、 libsvm工具箱在matlab下的应用

//%获取traindata、trainlabel,testdata、testlabel

traindata =[ train( : , 2 ), train( : , 4 ), train( : , 8 ), train( : , 10 )];

trainlabel = train( : , 14 );

testdata = [ test( : , 2 ), test( : , 4 ), test( : , 8 ), test( : , 10 ) ];

testlabel = test( : , 14 );

//%用traindata和trainlabel来训练出一个模型,引号里面参数的详细解释看上述网址的详解

model = svmtrain(trainlabel ,traindata,'-s 0 -t 2 -c 4 -g 1.2 -b 1');

save model model

//%用testdata、testlabel和训练出的模型进行做预测

[plabel, accuracy, dec_values] = svmpredict(testlabel,testdata,model,'-b 1');

save label.txt plabel -ascii

//%evaluate training results evaluate是自己写的一个评估函数

[TP,FN,FP,TN,POD,FAR,CSI,AUC,P,R,F] = Evaluate(plabel,testlabel);

save result P R F AUC CSI POD FAR TP FN FP TN dec_values

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

四、 libsvm的实际应用

1、获取原始数据

获取所需要的特征值和标签

2、将数据进行预处理

差分、归一化

(1)差分

由于气象中的特征,差分后的特征值会包含一些有用的信息,所以需要差分。新的特征值=原始特征值+差分(差分用的是向前差分d(t)=data(t)-data(t-1))

(2)归一化

现在的归一化方法有两种max_min归一化和mu_sigma归一化。公式如下:

new—data=(data-min)/(max-min)

new—data=(data-mu)/sigma

经对比结果发现第一种归一化方法更适用于我们的应用。

3、训练、预测

这里的训练、预测如‘三、libsvm工具箱在matlab下的应用’中的代码

4、评估

对评估结果分析发现POD、CSI、FAR达不到要求,分析可能是由于正例置信度为0.5,即:当某一个样例的概率大于50%,预测此样例为正样例。如果想要提高各项预测值,需要获得每个样本的预测概率以此来修改置信度。

具体解决方法如下

3ade0bc341ae2dfb52d1154e43444670.png

如上图椭圆框出来的,在训练 svmtrain和预测 svmpredict的时候都加上参数‘-b 1’会得到 dec_values。 在我们的实验中(二分,label 有1和-1)dec_values分为2列,第一列为样例预测为-1的概率,第二列为样例预测为1的概率。这样我们就可以根据dec_values来调整阈值(正例置信度),以达到提高精确度的效果。

五、小结

通过这一阶段的学习我发现,不能怕遇到问题,遇到问题后不能急仔细查找各种解决的方法。要仔细分析。。。心细。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值