文章目录

  • 支持向量机实例
    • 1.线性核函数
    • 2.多项式核函数
    • 3.RBF高斯核函数
    • 4.sigmoid核函数
    • 代码:
    • 结果:

支持向量机实例

1.线性核函数

def test_SVC_linear():'''测试 SVC 的用法。这里使用的是最简单的线性核:param data:  可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记:return: None'''iris = datasets.load_iris()X_train, X_test, y_train, y_test=train_test_split(iris.data, iris.target, test_size=0.25,random_state=0,stratify=iris.target)cls=SVC(kernel='linear')cls.fit(X_train,y_train)print('Coefficients:%s, intercept %s'%(cls.coef_,cls.intercept_))print('Score: %.2f' % cls.score(X_test, y_test))

2.多项式核函数

def test_SVC_poly():'''测试多项式核的 SVC 的预测性能随 degree、gamma、coef0 的影响.:param data:  可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记:return: None'''iris = datasets.load_iris()X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.25,random_state=0, stratify=iris.target)fig=plt.figure()### 测试 degree ####degrees=range(1,20)train_scores=[]test_scores=[]for degree in degrees:cls=SVC(kernel='poly',degree=degree,gamma='auto')cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))ax=fig.add_subplot(1,3,1) # 一行三列ax.plot(degrees,train_scores,label="Training score ",marker='+' )ax.plot(degrees,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_poly_degree ")ax.set_xlabel("p")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)### 测试 gamma ,此时 degree 固定为 3####gammas=range(1,20)train_scores=[]test_scores=[]for gamma in gammas:cls=SVC(kernel='poly',gamma=gamma,degree=3)cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))ax=fig.add_subplot(1,3,2)ax.plot(gammas,train_scores,label="Training score ",marker='+' )ax.plot(gammas,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_poly_gamma ")ax.set_xlabel(r"$\gamma$")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)### 测试 r ,此时 gamma固定为10 , degree 固定为 3######rs=range(0,20)train_scores=[]test_scores=[]for r in rs:cls=SVC(kernel='poly',gamma=10,degree=3,coef0=r)cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))ax=fig.add_subplot(1,3,3)ax.plot(rs,train_scores,label="Training score ",marker='+' )ax.plot(rs,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_poly_r ")ax.set_xlabel(r"r")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)plt.show()

3.RBF高斯核函数

ef test_SVC_rbf():'''测试 高斯核的 SVC 的预测性能随 gamma 参数的影响:param data:  可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记:return: None'''iris = datasets.load_iris()X_train, X_test, y_train, y_test=train_test_split(iris.data, iris.target, test_size=0.25,random_state=0,stratify=iris.target)gammas=range(1,20)train_scores=[]test_scores=[]for gamma in gammas:cls=SVC(kernel='rbf',gamma=gamma)cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))fig=plt.figure()ax=fig.add_subplot(1,1,1)ax.plot(gammas,train_scores,label="Training score ",marker='+' )ax.plot(gammas,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_rbf")ax.set_xlabel(r"$\gamma$")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)plt.show()

4.sigmoid核函数

def test_SVC_sigmoid():'''测试 sigmoid 核的 SVC 的预测性能随 gamma、coef0 的影响.:param data:  可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记:return: None'''iris = datasets.load_iris()X_train, X_test, y_train, y_test=train_test_split(iris.data, iris.target, test_size=0.25,random_state=0,stratify=iris.target)fig=plt.figure()### 测试 gamma ,固定 coef0 为 0 ####gammas=np.logspace(-2,1)train_scores=[]test_scores=[]for gamma in gammas:cls=SVC(kernel='sigmoid',gamma=gamma,coef0=0)cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))ax=fig.add_subplot(1,2,1)ax.plot(gammas,train_scores,label="Training score ",marker='+' )ax.plot(gammas,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_sigmoid_gamma ")ax.set_xscale("log")ax.set_xlabel(r"$\gamma$")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)### 测试 r,固定 gamma 为 0.01 ######rs=np.linspace(0,5)train_scores=[]test_scores=[]for r in rs:cls=SVC(kernel='sigmoid',coef0=r,gamma=0.01)cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))ax=fig.add_subplot(1,2,2)ax.plot(rs,train_scores,label="Training score ",marker='+' )ax.plot(rs,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_sigmoid_r ")ax.set_xlabel(r"r")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)plt.show()

代码:

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
import matplotlib.pyplot as pltdef test_SVC_linear():'''测试 SVC 的用法。这里使用的是最简单的线性核:param data:  可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记:return: None'''iris = datasets.load_iris()X_train, X_test, y_train, y_test=train_test_split(iris.data, iris.target, test_size=0.25,random_state=0,stratify=iris.target)cls=SVC(kernel='linear')cls.fit(X_train,y_train)print('Coefficients:%s, intercept %s'%(cls.coef_,cls.intercept_))print('Score: %.2f' % cls.score(X_test, y_test))def test_SVC_poly():'''测试多项式核的 SVC 的预测性能随 degree、gamma、coef0 的影响.:param data:  可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记:return: None'''iris = datasets.load_iris()X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.25,random_state=0, stratify=iris.target)fig=plt.figure()### 测试 degree ####degrees=range(1,20)train_scores=[]test_scores=[]for degree in degrees:cls=SVC(kernel='poly',degree=degree,gamma='auto')cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))ax=fig.add_subplot(1,3,1) # 一行三列ax.plot(degrees,train_scores,label="Training score ",marker='+' )ax.plot(degrees,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_poly_degree ")ax.set_xlabel("p")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)### 测试 gamma ,此时 degree 固定为 3####gammas=range(1,20)train_scores=[]test_scores=[]for gamma in gammas:cls=SVC(kernel='poly',gamma=gamma,degree=3)cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))ax=fig.add_subplot(1,3,2)ax.plot(gammas,train_scores,label="Training score ",marker='+' )ax.plot(gammas,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_poly_gamma ")ax.set_xlabel(r"$\gamma$")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)### 测试 r ,此时 gamma固定为10 , degree 固定为 3######rs=range(0,20)train_scores=[]test_scores=[]for r in rs:cls=SVC(kernel='poly',gamma=10,degree=3,coef0=r)cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))ax=fig.add_subplot(1,3,3)ax.plot(rs,train_scores,label="Training score ",marker='+' )ax.plot(rs,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_poly_r ")ax.set_xlabel(r"r")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)plt.show()def test_SVC_rbf():'''测试 高斯核的 SVC 的预测性能随 gamma 参数的影响:param data:  可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记:return: None'''iris = datasets.load_iris()X_train, X_test, y_train, y_test=train_test_split(iris.data, iris.target, test_size=0.25,random_state=0,stratify=iris.target)gammas=range(1,20)train_scores=[]test_scores=[]for gamma in gammas:cls=SVC(kernel='rbf',gamma=gamma)cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))fig=plt.figure()ax=fig.add_subplot(1,1,1)ax.plot(gammas,train_scores,label="Training score ",marker='+' )ax.plot(gammas,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_rbf")ax.set_xlabel(r"$\gamma$")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)plt.show()def test_SVC_sigmoid():'''测试 sigmoid 核的 SVC 的预测性能随 gamma、coef0 的影响.:param data:  可变参数。它是一个元组,这里要求其元素依次为训练样本集、测试样本集、训练样本的标记、测试样本的标记:return: None'''iris = datasets.load_iris()X_train, X_test, y_train, y_test=train_test_split(iris.data, iris.target, test_size=0.25,random_state=0,stratify=iris.target)fig=plt.figure()### 测试 gamma ,固定 coef0 为 0 ####gammas=np.logspace(-2,1)train_scores=[]test_scores=[]for gamma in gammas:cls=SVC(kernel='sigmoid',gamma=gamma,coef0=0)cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))ax=fig.add_subplot(1,2,1)ax.plot(gammas,train_scores,label="Training score ",marker='+' )ax.plot(gammas,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_sigmoid_gamma ")ax.set_xscale("log")ax.set_xlabel(r"$\gamma$")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)### 测试 r,固定 gamma 为 0.01 ######rs=np.linspace(0,5)train_scores=[]test_scores=[]for r in rs:cls=SVC(kernel='sigmoid',coef0=r,gamma=0.01)cls.fit(X_train,y_train)train_scores.append(cls.score(X_train,y_train))test_scores.append(cls.score(X_test, y_test))ax=fig.add_subplot(1,2,2)ax.plot(rs,train_scores,label="Training score ",marker='+' )ax.plot(rs,test_scores,label= " Testing  score ",marker='o' )ax.set_title( "SVC_sigmoid_r ")ax.set_xlabel(r"r")ax.set_ylabel("score")ax.set_ylim(0,1.05)ax.legend(loc="best",framealpha=0.5)plt.show()if __name__=="__main__":test_SVC_linear()test_SVC_poly()test_SVC_rbf()test_SVC_sigmoid()

结果:

线性核函数

多项式核函数

RBF高斯核函数

sigmoid核函数

机器学习之支持向量机实例,线性核函数 多项式核函数 RBF高斯核函数 sigmoid核函数相关推荐

  1. matlab rbf核函数,RBF高斯径向基核函数-svm

    RBF高斯径向基核函数(单值:两个点相似性) XVec表示X向量.||XVec||表示向量长度. r表示两点距离.r^2表示r的平方. k(XVec,YVec) = exp(-1/(2*sigma^2 ...

  2. 【机器学习】支持向量机详解,附带案例

    前言 \quad\quad 支持向量机基本思想就是 间隔最大化,看上去很简单,但是要想理解它并不是很容易.本篇将由基本概念出发,对公式进行推导,然后通过一些案例加以展示来介绍支持向量机.本篇篇幅比较长 ...

  3. 机器学习算法——支持向量机SVM5(核函数)

    在前面的文章里(支持向量机1-4)假设的训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类.然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面. 对于这样的问题,可 ...

  4. 支持向量机(SVM):超平面及最大间隔化、支持向量机的数学模型、软间隔与硬间隔、线性可分支持向量机、线性支持向量机、非线性支持向量机、核函数、核函数选择、SMO算法、SVM vs LR、优缺点

    支持向量机(SVM):超平面及最大间隔化.支持向量机的数学模型.软间隔与硬间隔.线性可分支持向量机.线性支持向量机.非线性支持向量机.核函数.核函数选择.SMO算法.SVM vs LR.优缺点 目录

  5. sklearn svm如何选择核函数_机器学习之支持向量机多种核模型对比

    机器学习 xueyifeiyun1989zx,公众号:围着围巾的小黑机器学习之监督学习实战 前文我们提到机器学习中的监督学习,其中有一个模型是我们提到的但是没有训练测试的,叫做支持向量机(简称SVM) ...

  6. 【机器学习基础】数学推导+纯Python实现机器学习算法10:线性不可分支持向量机...

    Python机器学习算法实现 Author:louwill 本节笔者和大家讨论支持向量机的最后一种情况--非线性支持向量机.前面两节我们探讨了数据样例是完全线性可分情况和近似线性可分情况下的支持向量机 ...

  7. 【机器学习基础】数学推导+纯Python实现机器学习算法8-9:线性可分支持向量机和线性支持向量机...

    Python机器学习算法实现 Author:louwill 前面两讲我们对感知机和神经网络进行了介绍.感知机作为一种线性分类模型,很难处理非线性问题.为了处理非线性的情况,在感知机模型的基础上有了两个 ...

  8. OpenCV之ml 模块. 机器学习:支持向量机(SVM)介绍 支持向量机对线性不可分数据的处理

    支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向 ...

  9. 机器学习之支持向量机(SVM)学习笔记-Datawhale Task05

    Author Bryce230 e-mail 2540892461@qq.com Software win10,Pycharm2019.3.3,Python3.7.7 SVM笔记-Datawhale ...

最新文章

  1. Android学习3—电话拨号器
  2. CVPR 2018 《High-speed Tracking with Multi-kernel Correlation Filters》论文笔记
  3. vscode插件的开发与发布流程
  4. 改不改,这是一个问题
  5. Jquery实现列表框效果
  6. SpringCloud系列十三:Feign对继承、压缩、日志的支持以及构造多参数请求
  7. 测试开发之编写测试用例
  8. winhex使用教程_[攻略] 无限视距——上帝视角教程
  9. 报名 | AI产品经理闭门会_第13期_北京_4场主题分享_本周六(2月19日)
  10. WIN10 企业版安装edge浏览器方法
  11. C语言:判断一个数是不是素数(质数)
  12. 【git及GitHub使用总结】(一)
  13. C++的简单FTP客户端实现(二)编程
  14. 什么是区块链(超详细)
  15. iPad莫名其妙黑屏了,无法打开屏幕?
  16. 2022-04-26:给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。 从点 (x
  17. java高级——认识网络
  18. [高通SDM450][Android9.0]默认取消dm-verity以及解决OTA校验vbmeta失败问题
  19. 2021年全球与中国全自动免疫分析分析仪行业市场规模及发展前景分析
  20. 【附源码】计算机毕业设计java医院管理系统设计与实现

热门文章

  1. python谁发明的1003python谁发明的_编程语言简史:有人不喜欢花括号,于是他发明了 Python...
  2. LoRaWAN终成全球物联网标准;利尔达与Everynet达成战略合作
  3. 设计模式-责任链(职责链)模式及责任链设计模式的应用
  4. c语言中的向上取整函数和向下取整函数
  5. 【音视频基础】(十三):YUV颜色空间之YUV和YCbCr
  6. Azure云数据库报表自动生成Excel 并自动发送邮件实现
  7. C语言自定义字符串复制函数
  8. 全方位揭秘!大数据从0到1的完美落地之Hive分桶
  9. 程序员的成长故事之 五年技术之路
  10. MXDP 力量的崛起