支持向量机

目录

1. 支持向量机原理

1.1 分类问题

 1.2 支持向量机本质

理解支持向量机的第一个层次==>支持向量

理解支持向量机的第二个层次==>允许误差

理解支持向量机的第三个层次==>非线性可分——降维打击

理解支持向量机的第四个层次==>核函数


1. 支持向量机原理

1.1 分类问题

         添加一组数据,会发现右边的数据更加合理

        那么,如何选择最好的那条线?

 1.2 支持向量机本质

理解支持向量机的第一个层次==>支持向量

        •找到正确分类训练数据的一组直线。
        •在找到的所有直线中,选择那条离最接近的数据点距离最远的直线。

        距离最接近的数据点称为支持向量(support vector)。支持向量定义的沿着分隔线的
区域称为 间隔(margin)

        目标:找到一个超平面,使得它能够尽可能多的将两类数据点正确的分开,同时使分开的两类数据点距离分类面最远。

理解支持向量机的第二个层次==>允许误差

        SVM允许我们通过参数 C 指定愿意接受多少误差:如图所示,如果误差为零则是黑虚线;如果允许误差可能会得到粉红实现,得

到更好的分类效果。

理解支持向量机的第三个层次==>非线性可分——降维打击

        在低维线性不可分可以投影到高维空间进行区分

        再将高维空间的数据映射回去:

 思考:映射回原空间的分类超平面是什么样的?       

理解支持向量机的第四个层次==>核函数

        实际中,会经常遇到线性不可分的样例。此时常用做法是把样例特征映射到高维空间中去,相关特征便被分开了,也就达到了分类的目的;
        但进一步,如果凡是遇到线性不可分的样例,一律映射到高维空间,那么这个维度大小是会高到可怕的。

        核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数事先在低维.上进行计算,而将实质.上的分类效果表现在了高维上,也就避免了直接在高维空间中的复杂计算。
        能这样做的条件是:

  • 定义的核函数能够对应于特征空间中的内积;
  • 识别方法中不需要计算特征空间中的矢量本身,而只须就算特征空间中两个矢量的内积。

 几类常用的核函数:
1、线性核函数

2、多项式核函数

                d为多项式阶数
3、高斯核函数

                 \sigma*2为方差

2.支持向量机实战

步骤:
        1.导入库        from sklearn import svm
        2.模型定义         model = svm. SVC()
        3.模型函数         model. fit(trainingMat, hwl abels )
        4. 模型测试        classifierResult = model. predict (vectorUnderTest)

实现代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm #1.导入库
fight=(3,2,1,101,99,98)
kiss=(104,100,81,10,5,2)
filmtype=(1,1,1,2,2,2)
plt.scatter(fight,kiss,c=filmtype)

x=np.array([fight,kiss])
y=np.array(filmtype)
x=x.T
print(x)
print(y)
model=svm.SVC()#2.训练模型
model.fit(x,y)#3.训练函数

xx=np.array([18,90])

result = model.predict(xx.reshape(1,-1))#4.模型测试,reshape将数据归整
print("result",result)

运行结果:result [1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值