SVM
2016-07-20 13:05
218 查看
SVM 支持向量机,在sklearn里面,有两种,SVC支持向量分类,用于分类问题,SVR,支持向量回归,用于回归问题。
核方法
用于产生非线性分类边界。linear,线性核,会产生线性分类边界,一般来说它的计算效率最高,而且需要数据最少。线性函数。
from sklearn import svm svc = svm.SVC(kernel='linear') svc.fit(X, y)
poly,多项式核,会产生多项式分类边界。多项式函数。
svc = svm.SVC(kernel='poly',degree=4) svc.fit(X, y)
rbf,径向基函数,也就是高斯核,是根据与每一个支持向量的距离来决定分类边界的,它能映射到无限维,是最灵活的方法,但是也需要最多的数据。容易产生过拟合问题。指数函数。
svc = svm.SVC(kernel='rbf', gamma=1e2)
多分类器
采用”one vs one”,在任意两个样本之间设计一个SVM,k个类别的样本设计k(k-1)/2个svm,当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。
线性支持向量分类器(LinearSVC):相比于svm.SVC,使用了不同的算法,在某些数据集(比如稀疏数据集,文本挖掘)上运行得更快,对于多分类采用的就是”one vs all”的策略
svc=svm.LinearSVC(X,Y)
支持向量
就是最靠近分离边界的样本点,它们是二分类问题中最具有代表性的点。支持向量的坐标可以通过方法support_vectors_来找到。svc.support_vectors_[:, 0], svc.support_vectors_[:, 1]
正则化
只考虑支持向量。使模型在处理样本特征的时候变得更加简单。正则项可以通过调整系数C来决定
#大的C值:将会有较少的支持向量,决策边界是被大多数支持向量所决定。 svc = svm.SVC(kernel='linear', C=1e3) #小的C值:将会有较多支持向量,决策边界=类别A的平均值-类别B的平均值 svc = svm.SVC(kernel='linear', C=1e-3)
默认参数C=1,对于很多数据集,默认值就能工作的很好。
实践经验:对许多分类器来说,对样本正则化,采用标准差正则方法是非常重要的提升预测效果的手段。
相关文章推荐
- 神器SystemTap
- 解读Linux安全机制之栈溢出保护
- 簡單設定 kernel 選項在使用 iptables 前
- Ubuntu12.04内核升级出了问题
- 关于SVM的那点破事
- [Linux学习笔记] Linux系统引导流程(一)
- 更新Debian内核e1000e驱动模块
- Linux Kernel 4.5在3月15日发布最终版
- kernel: printk: 2 messages suppressed.
- linux 内核 hash table 的使用
- Linux Kernel Panic报错解决思路
- kernel: TCP: time wait bucket table overflow错误的解决办法
- linux安全相关
- 内核的主要配置文件的详细说明
- Linux Kernel 2.6.32 Local Root Exploit (x86_64)
- LINUX ulimit命令详解
- LSI SVM 挑战IBM SVC
- Linux Kernel kNFSd 整数溢出 拒绝服务漏洞 .
- 基于busybox和linux kernel制作小linux
- Linux IPv4代码分析系列(1)