SVM 支持向量机原理 以及sklearn 代码的实现

支持向量机(Support Vector Machine,SVM)

有监督学习和无监督学习
有监督学习就是已知事物的分类标签告诉模型训练参数,无监督就是不知道事物的分类标签需要模型自行识别,常用的无监督学习算法有 LDA k-means聚类。
这里讲SVM的原理总结成我自己的话:
支持向量机的训练就是找到一个超平面将样本分开,这个超平面就是我们的分类器。如何找到这个分类间隔,通过移动这个超平面,找到极限位置,落在极限位置上的点 就是支持向量,极限位置到平面的位置就是分类间隔,拥有最大间隔的决策面就是要找的决策面。实际情况由于数据没那么干净都是用的近似线性可分。如果线性不可分那么就要加入核函数。常用的核函数有 高斯核 sigmod核
SVM是如何解决多分类问题的
从SVM的原理来看他是解决2分类的问题的,但是多个二分类其实就是多分类了。一般采用一对一训练法,就是两量分类之间有一个分类器,最后预测的时候每个分类器都有一个结果,最后置信最高的就是目标分类。
SVM的具体使用
继续使用我github 上 https://github.com/everyStudyNow/ml_learning.git 的代码 只需要做如下步骤修改

导入头文件
from sklearn import svm
然后将model的哪一行改为model = svm.LinearSVC()  或者
model = svm.SVC(probability=True)
下面说下LinearSVC() 和SVC的区别

LinearSVC
线性可分问题 用于处理线性可分的数据 只能使用线性核函数 linear:线性核函数
SVC
针对非线性问题 即可以使用线性核函数又可以使用高维核函数。
SVC 的构造函数:model = svm.SVC(kernel=‘rbf’, C=1.0, gamma=‘auto’),这里有三个重要的参数 kernel、C 和 gamma。
kernel 核函数的类型 可以是 linear poly(多项式核函数)rbf(高斯核函数 默认)sigmoid 核函数

你可能感兴趣的:(机器学习)