使用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对随机生成数据集进行分类 (线性可分 硬间隔) 的相关文章

  • 手动计算SVM的决策函数

    我正在尝试使用Python库SKLearn手动计算SVC分类器的decision function 而不是使用内置方法 我已经尝试了几种方法 但是 当我don t扩展我的数据 z是一个测试数据 已缩放 我认为其他变量本身就说明了问题 另外
  • 什么是主动学习(Active Learning)?定义,原理,以及主要方法

    数据是训练任何机器学习模型的关键 但是 对于研究人工智能的企业和团队而言 数据仍是实现成功的最大障碍之一 首先 您需要大量数据来创建高性能模型 更重要的是 您需要标注准确的数据 虽然许多团队一开始都是手动标注数据集 但更多团队已逐渐实现数据
  • 由于人工智能和自动化,2030 年将不存在的 6 个科技工作岗位

    我们都知道人工智能和自动化已经存在 并且有很多关于它们将如何扰乱日常业务实践以及支撑它们的专业角色的讨论 虽然预测某些工作岗位将彻底消失似乎很戏剧性 但对未来可能发生的情况保持现实态度是明智的 以便为接下来发生的事情做好准备 因此 考虑到这
  • 使用GridSearchCV时出现值错误

    我正在使用 GridSearchCV 进行分类 我的代码是 parameter grid SVM dual True False loss squared hinge hinge penalty l1 l2 clf GridSearchCV
  • 如何为 Python 设置 LIBSVM

    I built libsvm http www csie ntu edu tw cjlin libsvm 在 Mac OS X 上使用 Make tar xzfv libsvm 3 17 tar gz cd libsvm 3 17 make
  • scikit-learn 中奇怪的 SVM 预测性能 (SVMLIB)

    我在 10000x1000 的大型数据集 10000 个对象 1000 个特征 上使用 scikit learn 的 SVC 我已经在其他来源中看到 SVMLIB 的扩展范围不能超过约 10000 个对象 我确实观察到了这一点 traini
  • R SVM alpha 系数

    我正在尝试从 PMML 文件在 R 中重新创建 SVM 对象 但无法理解 R 如何存储 alpha 系数 我目前正在 iris 数据集上测试它 并使用以下命令生成了一个 R SVM 对象 library e1071 data iris mo
  • 计算MLLIB SVM多类概率

    我想知道如何在多类分类问题中使用 Spark MLLIB SVM 计算概率 文档显示没有这样的功能可用 LibSVM https stackoverflow com questions 7802556 regarding probabili
  • Opencv:使用 FAST 关键点和 Brief 特征训练 SVM

    我想训练一个用于对象检测的支持向量机 此时 我有一个 python 脚本 可以检测 FAST 关键点并提取该位置的 Brief 特征 现在我不知道如何使用这些描述符来训练 SVM 请你告诉我 如何使用描述符来训练SVM 据我所知这些描述符应
  • Scikit - SVM 的 3D 特征数组

    我正在尝试在 scikit 中训练 SVM 我正在遵循该示例并尝试将其调整为我的 3d 特征向量 我尝试了页面中的示例http scikit learn org stable modules svm html http scikit lea
  • 无法绘制 svm 图。 terms.default(x) 中的错误:没有术语组件或属性

    我可以在我的数据集上使用 R 包 e1071 运行 svm 但我无法使用任何两个预测变量来绘制图表 即使在谷歌搜索了很多之后我也无法找到它的解决方案 请专家帮我解决这个问题 我有一个具有以下属性的数据集 gt dim fulldata 1
  • 电脑快速打开计算器的方法

    大家好 我是爱你三千遍斯塔克 我们平常在运算时 经常要要使用计算器 那么计算器有什么快速打开方法吗 这里有一些参考方法 可供大家进行参考 希望对大家有帮助 希望你喜欢我的内容 记得关注我哦 我会继续为大家带来更好的作 1 win R 打开运
  • 如何处理 SVM 中的数据不平衡问题?

    如果我在较大的训练集上训练 SVM 并且类变量为 True 或 False 那么与训练集中的 False 值数量相比 True 值很少会影响训练模型 结果吗 它们应该相等吗 如果我的训练集 True 和 False 的分布不相等 我该如何解
  • 如何使用 R 中 e1071 包的“svm”执行多类分类

    我想使用执行多类分类svm的函数e1071包裹 但据我从文档中了解到svm 只能进行二元分类 插图文档讲述了多类分类的情况 为了允许多类分类 libsvm通过拟合所有二元子分类器并通过投票机制找到正确的类 使用一对一技术 我仍然不明白的是我
  • MATLAB 中 10 重 SVM 分类的示例

    我需要一个描述性示例来展示如何对两类数据集进行 10 倍 SVM 分类 MATLAB 文档中只有一个示例 但不是 10 倍 有人能帮我吗 这是一个完整的示例 使用生物信息学工具箱中的以下函数 SVMTRAIN http www mathwo
  • LinearSVC sklearn (scikit-learn) 中 C 的行为

    首先我创建一些玩具数据 n samples 20 X np concatenate np random normal loc 2 scale 1 0 size n samples np random normal loc 20 0 scal
  • 一类 SVM libSVM

    假设我的特征向量是 x1 x2 xn 谁能给我一个使用 libSVM 训练一类 SVM 的代码 我应该如何使用交叉验证来学习参数 这可能对你有帮助 label ones Number Of your training instances 1
  • 使用支持向量回归进行时间序列预测

    我一直在尝试使用Python语言中的支持向量回归来实现时间序列预测工具 我使用 scikit learn 中的 SVR 模块进行非线性支持向量回归 但我对未来事件的预测有严重的问题 回归线非常适合原始函数 根据已知数据 但一旦我想预测未来的
  • 如何使用 SVM 预测多类情感分析问题中的所有类?

    好吧 我正在制作一个情感分析分类器 我有三个类别 标签 积极 中性和消极 我的训练数据的形状是 14640 15 其中 negative 9178 neutral 3099 positive 2363 我对数据进行了预处理 使其标准化 并将
  • 如何加载之前存储的svm分类器?

    我正在 Visual Studio 中使用 openCV SVM OpenCV 2 4 4 0 我训练它 mySVM train trainingDataMat labelsMat Mat Mat params 已保存 mySVM save

随机推荐

  • 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一定要