使用Orange进行数据挖掘之分类(4)------SVM

SVM基本概念

简单的说SVM是一种对线性合非线性数据进行分类的方法。

以二维数据为例,中间的直线将数据分为两部分,分别用实心的圆点和空心的圆点表示。

对于上边的数据可能有很多直线将数据区分开,如下

SVM通过搜索最大边缘超平面来选择最合适的超平面,因为具有较大边缘的超平面对于未来的数据分组分类更好的准确性。

分离超平面表示为:

W*X+b =0

位于超平面上方的点满足 W*X+b >0,位于超平面下方的点满足 W*X+b <0,

可以定义分离超平面的边缘为:W*X+b =1 和W*X+b =-1;边缘之间的距离可以推到为 2/|w|。

对于非线性可分的情况,需要按照如下两步扩展SVM:

  1. 用非线性映射把原始数据据变换到高纬空间
  2. 在新的空间搜索最大边缘超平面

Orange中的SVM

Orange中的SVM基于LibSVM LIBLINEAR 这两个库。提供了三个学习算法

  • SVMLearner

  • SVMLearnerEasy

  • LinearSVMLearner

下面的例子使用了这三种算法:

from Orange import data
from Orange.classification import svm

iris = data.Table("iris")
svm_easy = svm.SVMLearnerEasy(iris,name="svm easy", folds=3)
svm_normal = svm.SVMLearner(iris,name="svm")
svm_linear =svm.LinearSVMLearner(iris,name="svm linear")

for i in iris[:5]:

 print svm_normal(i),svm_easy(i),svm_linear(i),i.getclass()

运行结果如下:

Iris-virginica Iris-virginica Iris-virginica Iris-virginica
Iris-virginica Iris-virginica Iris-virginica Iris-virginica
Iris-virginica Iris-virginica Iris-virginica Iris-virginica
Iris-virginica Iris-virginica Iris-virginica Iris-virginica
Iris-virginica Iris-virginica Iris-virginica Iris-virginica


下图用可视化的方式比较了svm和其它分类算法结果:



参考资料

数据挖掘:概念与技术 http://book.douban.com/subject/2038599/

数据挖掘导论:http://book.douban.com/subject/5377669/



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值