python sklearn 支持向量机_python_sklearn机器学习算法系列之SVM支持向量机算法

本文主要目的是通过一段及其简单的小程序来快速学习python 中sklearn的svm 这一函数库的基本操作和使用,注意不是用python纯粹从头到尾自己构建svm ,既然sklearn提供了现成的我们直接拿来用就可以了,当然其原理十分重要,这里做简单介绍:

SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题.简单地说,就是升维和线性化.升维,就是把样本向高维空间做映射,一般情况下这会增加计算的复杂性,甚至会引起"维数灾难",因而人们很少问津.但是作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间中却可以通过一个线性超平面实现线性划分(或回归).一般的升维都会带来计算的复杂化,SVM方法巧妙地解决了这个难题:应用核函数的展开定理,就不需要知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了"维数灾难".这一切要归功于核函数的展开和计算理论.

选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种:

⑴线性核函数K(x,y)=x·y;

⑵多项式核函数K(x,y)=[(x·y)+1]^d;

⑶径向基函数K(x,y)=exp(-|x-y|^2/d^2)

⑷二层神经网络核函数K(x,y)=tanh(a(x·y)+b).

更加详细的介绍建议看https://blog.csdn.net/lisi1129/article/details/70209945?locationNum=8&fps=1

svm既可以用来解决分类(SVC)又可以解决回归(SVR)下面将分别给出相关测试代码:

一   SVC:

在给出代码之前先简单介绍一个概念:核函数。其实质就是,在实际中,我们会经常遇到线性不可分的样例,此时,我们的常用做法是把样例特征映射到高维空间中去,但进一步,如果凡是遇到线性不可分的样例,一律映射到高维空间,那么这个维度大小是会高到可怕的。 此时,核函数就隆重登场了,核函数的价值在于它虽然也是讲特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上, 也就如上文所说的避免了直接在高维空间中的复杂计算(详细见https://blog.csdn.net/leonis_v/article/details/50688766)。SVM关键是选取核函数的类型,主要有线性内核,多项式内核,径向基内核(RBF),sigmoid核,至于怎样选取请看https://www.zhihu.com/question/21883548

在本次代码中支持向量分类(SVM_SVR)仅实验了线性内核和径向基内核(RBF)

代码:

#支持向量机分类

import numpy as np

import matplotlib as mpl

import matplotlib.pyplot as plt

import warnings

from sklearn import svm

from sklearn import metrics

from sklearn import datasets

from sklearn.svm import SVC

from sklearn.model_selection import train_test_split

#忽略一些版本不兼容等警告

warnings.filterwarnings(&#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值