SVM
来源:互联网 发布:java random 1到100 编辑:程序博客网 时间:2024/05/19 12:15
SVM 支持向量机,在sklearn里面,有两种,SVC支持向量分类,用于分类问题,SVR,支持向量回归,用于回归问题。
核方法
用于产生非线性分类边界。
linear,线性核,会产生线性分类边界,一般来说它的计算效率最高,而且需要数据最少。线性函数。
from sklearn import svmsvc = 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,对于很多数据集,默认值就能工作的很好。
实践经验:对许多分类器来说,对样本正则化,采用标准差正则方法是非常重要的提升预测效果的手段。
0 0
- SVM
- SVM
- SVM
- svm
- svm
- svm
- svm
- SVM
- SVM
- SVM
- SVM
- svm
- SVM
- SVM
- SVM
- SVM
- SVM
- SVM
- Spring MVC: Internationalization & localization
- spark 集群搭建 详细步骤
- Toolbar的背景虚化加listView头部布局置顶
- createStatement()的用法
- yaml-cpp安装
- SVM
- 关于MEMSET的初始最大最小值
- Javascript刷新页面
- warSourceExcludes和packagingExcludes参数的区别
- JSP学习笔记2
- Linux IPC(进程间通信)摘要(信号灯,共享内存,消息队列,管道)(一)
- OpenFOAM用wmake编译applications/test里的文件时缺少libmpi.so.1的解决办法
- 关于线程同步问题
- Android Databinding 从入门到转行(四)自定义设置通知刷新回调