使用SVM对随机生成数据集进行分类 (线性可分 硬间隔)

2023-11-19

具体数学原理参考《统计学习方法》

在学习过程中有疑惑如下:

一直想不明白为什么式7.11中的分子没有用并且可以被当作常数

下面的解释是当w与b同比例变换时,函数间隔(即分子)亦会同比例变换。的确是这样,自己纸上写一下就好。

但是为什么w和b一定要同比例变换?如果不同比例的话上述结论就不成立了啊?

后来自己想到的解释是:

我们最终要求的参数是w和b,而w和b组合在一起就代表了一个平面。对于整个问题而言,我们要找的就是一个可以是几何间隔最大的超平面,可以大体表示为y=f(x)的形式,其中x代表各个平面,y代表最大几何间隔,f代表我们求解的过程。在多项式中,我们如果将x换元为2*x、x+1等,是对x这个整体进行的操作。在这里也是一样的道理,必须对这个平面整体进行操作,即w',b'=2*(w,b)

 

 

 

svm在sklearn中被封装成了现成的工具

先生成线性可二分类的数据集 然后调用库函数即可求出代表超平面的w与b

 

import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn import svm
from matplotlib import pyplot as plt

np.random.seed(0)
X=np.r_[np.random.randn(20,2)-[3,3],np.random.randn(20,2)+[3,3]]
Y=20*[0]+20*[1]

clf=svm.SVC(kernel='linear')
clf.fit(X,Y)
w,b=clf.coef_[0],clf.intercept_[0]
s=clf.support_vectors_
#print(w,b)
#print(s)

k,b0=-w[0]/w[1],-b/w[1]
b1=(w[0]*s[0][0]+w[1]*s[0][1])/w[1]
b2=(w[0]*s[2][0]+w[1]*s[2][1])/w[1]

plt.title('SVM')
plt.xlabel('X')
plt.ylabel('Y')
XX=np.linspace(-5,5)
YY0=k*XX+b0
YY1=k*XX+b1
YY2=k*XX+b2
plt.plot(XX,YY0,'-m',label='Hyperplane')
plt.plot(XX,YY1,'-c',label='Hard margin I')
plt.plot(XX,YY2,'-k',label='Hard margin II')
plt.legend(loc='upper left')
plt.scatter(X[0:20,0],X[0:20,1],s=10,c='r')
plt.scatter(X[20:40,0],X[20:40,1],s=10,c='b')
for i in s:
    plt.scatter(i[0],i[1],s=20,c='g',linewidths=2,edgecolors='y')
plt.grid()
plt.show()

效果如下图所示:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用SVM对随机生成数据集进行分类 (线性可分 硬间隔) 的相关文章

  • 3. ClickHouse数据类型和表结构

    3 1 数据类型 整数类型 整数类型有Int8 Int16 Int32 Int64 分别表示8位 16位 32位和64位有符号整数 适用场景 存储整数值 如年龄 数量等 浮点类型 浮点类型有Float32和Float64 分别表示32位和6

随机推荐

  • Jenkins自动化部署项目

    Jenkins史上最详细的使用教程 jenkins官网 jenkins简单部署Vue项目 jenkins部署springboot项目 jenkins详细部署说明 后续小编会写上自己的使用心得 jenkins官网 https www jenk
  • 计算机用于更新无法卸载补丁,出现windows 系统补丁无法卸载该怎么解决?简单几步即可解决...

    电脑已经成为我们日常生活中的必备品 长期使用电脑肯定会碰到win10系统kb4034674无法卸载提示 没有成功卸载全部更新的问题 很多用户之前从未遇到win10系统kb4034674无法卸载提示 没有成功卸载全部更新这样的问题 其实win
  • 【前端基础知识复习】

    js基础知识复习 原型链 继承 原型链继承 经典继承 借用构造函数 组合继承 1和2结合 常用 原型式继承 ES5 Object create 寄生式继承 寄生组合继承 最理想 作用域与作用域链 闭包 立即执行函数 typeof和insta
  • 服务器内核有未知文件,【原创文章】CENTOS kernel panic无法对未知的块安装根文件系统的解决办法...

    今天突然发现维护的linux系统无法访问了 网站打不开 SSH无法登陆 后台面板也没有响应 打开机房的管理后台 reboot服务器 过了一会还是没有反应 有点纳闷 这是商业网站 不敢怠慢 马上开工找问题 打开机房准备的KVM KVM是基于j
  • 一、super slomo介绍

    本专题文章对super slomo进行一系列操作 降低训练时间 预测时间 导出训练模型 C 调用模型进行预测等 本章对其进行一个简单介绍 来自互联网 2018年CVPR的论文 Super SloMo High Quality Estimat
  • 阿里平头哥CPU技术生态负责人陈炜:平头哥的发展之路

    整理 巫柔颖 RISC V是近年兴起的一种CPU新架构 因其开放 灵活的特性而逐渐成为半导体行业的热门选择 当前 已有近2500家机构加入RISC V基金会 包括阿里 华为 Google 英特尔 IBM等公司 在阿里宣布平头哥开源玄铁RIS
  • windows sql server 如何卸载干净?

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 windows sql server 怎么卸载干净 前言 一 windows sql server是什么 二 如何卸载干净 1 关闭sql server服务 2 到控制面板
  • hive 表创建及字段信息管理

    1 分区表创建及数据导入 1 1 创建分区表 以日期pt分区 字段用 t分隔 输入格式为txt 存储格式为orc use db name drop table if exists tablename CREATE TABLE IF NOT
  • Windows10 adb安装与环境变量配置

    adb安装与环境变量配置 目录 adb安装与环境变量配置 安装adb工具都需要什么 Android SDK 的下载 如何配置变量环境 adb启动不了是什么原因 安装adb工具都需要什么 1 需要下载Android SDK 配置环境变量即可
  • 797. 所有可能的路径

    class Solution public vector
  • 用STM32F407ZET6的HAL库写一个串口接收,发送代码,支持ringbuff

    你可以参考这个示例代码 https www st com content ccc resource technical document application note group0 b5 d4 04 c1 b4 4f 4d e5 DM0
  • 准确率与召回率

    1 准确率与召回率 Precision Recall 准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值 用来评价结果的质量 其中精度是检索出相关文档数与检索出的文档总数的比率 衡量的是检索系统的查准率 召回率是指检索出的相关文档
  • 求字符串长度的三种方法(C语言)

    如何求字符串的长度 首先要明白字符串存储的原理 字符串存储时 是以 0 结尾 这个就可以作为判断字符串结尾的一个条件 接下来 只要有字符串的首元素地址 就可以解决求字符串长度的问题啦 第一种 普通版 int my strlen char s
  • Revit 2019: Essential Training for MEP (Metric) Revit 2019:MEP基本培训 Lynda课程中文字幕

    Revit 2019 Essential Training for MEP Metric Revit 2019 MEP基本培训 Lynda课程中文字幕 Revit 2019 Essential Training for MEP Metric
  • 转载:Swap与Memory内存简单介绍

    背景介绍 对于Linux来说 其在服务器市场的使用已经占据了绝对的霸主地位 不可动摇 Linux的各种设计思想和使用也被传承 当然不乏各种黑Linux 而且黑的漂亮 Linux的很多独特的设计 对性能也产生了巨大的提升 也为其他应用软件和系
  • 如何加载MySql数据库驱动?

    一 直接把下载好的驱动jar包放在了C 下 二 修改CLASSPATH 右键 我的电脑 gt 环境变量里 遇到的问题 1老是遇到如下图红线框中的问题 修改了有5678次才修改
  • C语言整理

    C语言整理 谭大爷的书 精简版 l 程序设计和C语言 1 main表示主函数 int表示类型 stdio是一个文件名 h是头文件 include指令把信息调用 2 函数的组成 函数首部和函数体 声明部分与执行部分 3 编辑 编译 链接 执行
  • 医院管理系统服务器,解决方案-医院业务运维管理系统- 新华三集团-H3C

    BSM概述 H3C BSM 业务服务管理 解决方案 是新一代以业务为视角 以CMDB为核心 对业务和相关IT基础设施进行监控 管理和分析的解决方案 从业务入手 全面管理应用 网络 计算 存储 虚拟化等IT资源 建立统一的IT资源信息库 实现
  • 数据结构之数组

    目录 前言 线性表与连续内存 数组是如何支持随机访问 数组的插入与删除 数组越界 总结 参考文章 前言 数组是我们平时开发中经常遇到的一种数据结构 提起数组 我们能想到最大的特点就是 要提前定义好 需要提前申请好内存空间 数组是一种线性表数
  • 使用SVM对随机生成数据集进行分类 (线性可分 硬间隔)

    具体数学原理参考 统计学习方法 在学习过程中有疑惑如下 一直想不明白为什么式7 11中的分子没有用并且可以被当作常数 下面的解释是当w与b同比例变换时 函数间隔 即分子 亦会同比例变换 的确是这样 自己纸上写一下就好 但是为什么w和b一定要