机器学习实战:Python基于支持向量机SVM-RFE进行分类预测(三)

2023-11-14

1 前言

1.1 支持向量机的介绍

支持向量机(Support Vector Machine,SVM)是一种监督学习的分类算法。它的基本思想是找到一个能够最好地将不同类别的数据分开的超平面,同时最大化分类器的边际(margin)。SVM的训练目标是最大化间隔(margin),即支持向量到超平面的距离。

具体地,对于给定的训练集,SVM会找到一个最优的分离超平面,使得距离该超平面最近的样本点(即支持向量)到该超平面的距离最大化。SVM是一种二分类算法,但可以通过多次调用SVM实现多分类问题的解决。SVM的优化问题可以通过凸优化来求解,其中使用拉格朗日乘子法将约束优化问题转化为无约束优化问题。

优点:

  • 在高维空间中表现良好:SVM通过寻找一个可以将数据分离的超平面来实现分类,这使得SVM在高维空间中表现良好。

  • 可以避免过拟合:SVM在最大化边际的同时,也要尽可能地避免分类错误。这样可以有效地避免过拟合的问题。

  • 可以处理非线性问题:SVM可以使用核函数将数据从原始空间映射到高维空间,从而解决非线性问题。

缺点:

  • 对参数敏感:SVM的性能依赖于选择的核函数和正则化参数C。这些参数的选择对算法的性能有很大影响,但通常需要手动进行调整。

  • 不适用于大规模数据集:SVM的训练时间随着数据量的增加而增加。这使得SVM不适用于大规模数据集。

  • 可能受到噪声的影响:SVM对于噪声敏感,如果训练集中存在错误的标签或者异常点,可能会对分类器的性能产生负面影响。

总的来说,SVM是一种强大的分类算法,特别适用于高维空间和小数据集。但在实际应用中需要针对具体问题进行参数的调整和模型的优化。

1.2 支持向量机的应用

本篇不过多涉及原理和算法,在处理线性不可分的情况,支持向量机还是很优雅的,在上世纪90年代左右,SVM曾红极一时。常应用于:

  1. 图像分类和识别:SVM常被用于图像分类和识别任务中,例如人脸识别、数字识别等。

  2. 自然语言处理:SVM在文本分类、情感分析、文本检索等领域中得到广泛应用。

  3. 生物信息学:SVM在蛋白质结构预测、DNA分类等生物信息学领域中得到应用。

  4. 工业应用:SVM在质量控制、故障诊断、预测性维护等领域中得到广泛应用。

  5. 金融领域:SVM在股票预测、信用评级、欺诈检测等金融领域中应用广泛。

2 demo数据集演示

2.1 导入函数

##  基础函数库和画图库
import numpy as np 
import matplotlib.pyplot as plt
import seaborn as sns

## 导入svm
from sklearn  import svm

2.2 构建数据集拟合

## 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 0, 0, 1, 1, 1])

## 调用SVC模型 (支持向量机分类)
svc = svm.SVC(kernel='linear')
## 用SVM模型拟合构造的数据集
svc = svc.fit(x_fearures, y_label) 

## 查看其对应模型的w
print('the weight of Logistic Regression:',svc.coef_)
## 查看其对应模型的w0
print('the intercept(w0) of Logistic Regression:',svc.intercept_)

2.3 预测模型及可视化

y_train_pred = svc.predict(x_fearures)
print('The predction result:',y_train_pred)

# 可视化
x_range = np.linspace(-3, 3)
w = svc.coef_[0]
a = -w[0] / w[1]
y_3 = a*x_range - (svc.intercept_[0]) / w[1]

# 可视化决策边界
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.plot(x_range, y_3, '-c')
plt.show()

这个结果区分的很明显,方便大家看和理解。

3 实例演示分类(非SVM)

这里模拟一下场景问题,在实际情况中,拿到一个二分类数据后怎么处理?

3.1 导入函数和数据

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets.samples_generator import make_blobs
%matplotlib inline

# 可视化
X, y = make_blobs(n_samples=60, centers=2, random_state=0, cluster_std=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, s=60, cmap=plt.cm.Paired)

3.2 简单线性分类

# 画散点图
X, y = make_blobs(n_samples=60, centers=2, random_state=0, cluster_std=0.4)

plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=plt.cm.Paired)

x_fit = np.linspace(0, 3)
# 画函数
y_1 = 1 * x_fit + 0.8
plt.plot(x_fit, y_1, '-c')
y_2 = -0.3 * x_fit + 3
plt.plot(x_fit, y_2, '-k')

分法很多种,根据结果大家也能看到,但是,这两种分类哪种更好呢?

因此为了判断好坏,需要引入一个准则:好的分类器不仅仅是能够很好的分开已有的数据集,还能对未知数据集进行两个的划分

3.3 最大间隔决定分类

这里引入一个点(3, 2.8),很明显两种分类会出现两种不同的结果

因此,引入一个重要的概念:最大间隔,笔者这里类比成置信区间也可

# 画散点图
X, y = make_blobs(n_samples=60, centers=2, random_state=0, cluster_std=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=plt.cm.Paired)

x_fit = np.linspace(0, 3)

# 画函数
y_1 = 1 * x_fit + 0.8
plt.plot(x_fit, y_1, '-c')
# 画边距
plt.fill_between(x_fit, y_1 - 0.6, y_1 + 0.6, edgecolor='none', color='#AAAAAA', alpha=0.4)

y_2 = -0.3 * x_fit + 3
plt.plot(x_fit, y_2, '-k')
plt.fill_between(x_fit, y_2 - 0.4, y_2 + 0.4, edgecolor='none', color='#AAAAAA', alpha=0.4)

蓝线的区间是大于黑线的,因此这样看好像选蓝线的分类更优

但是确定没有更大的间隔了?

4 实例演示分类(SVM)

4.1主角登场

from sklearn.svm import SVC
# SVM 函数
clf = SVC(kernel='linear')
clf.fit(X, y)

# 最佳函数
w = clf.coef_[0]
a = -w[0] / w[1]
y_3 = a*x_fit - (clf.intercept_[0]) / w[1]

# 最大边距 下界
b_down = clf.support_vectors_[0]
y_down = a* x_fit + b_down[1] - a * b_down[0]
# 最大边距 上界
b_up = clf.support_vectors_[-1]
y_up = a* x_fit + b_up[1] - a * b_up[0]

# 画散点图
X, y = make_blobs(n_samples=60, centers=2, random_state=0, cluster_std=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=plt.cm.Paired)
# 画函数
plt.plot(x_fit, y_3, '-c')
# 画边距
plt.fill_between(x_fit, y_down, y_up, edgecolor='none', color='#AAAAAA', alpha=0.4)
# 画支持向量
plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], edgecolor='b',
            s=80, facecolors='none')

结果显而易见,且图中三个蓝色圆圈即为支持向量,支持向量机提供了在众多可能的分类器之间进行选择的原则,从而确保对未知数据集具有更高的泛化性。

4.2 软间隔

在大多数实际情况中我们遇到的数据:

# 画散点图
X, y = make_blobs(n_samples=60, centers=2, random_state=0, cluster_std=0.9)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=plt.cm.Paired)

因此软间隔,就是相比于硬间隔,可以容受个别变量处于间隔带中**“墙头草”,但如果没有一个原则进行约束,满足软间隔的分类器也会出现很多条。
所以需要对分错的数据进行惩罚,SVC 函数中,有一个参数 C 就是
惩罚参数**。惩罚参数越小,容忍性就越大。

以c=1为例:

# 画散点图
X, y = make_blobs(n_samples=60, centers=2, random_state=0, cluster_std=0.9)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=plt.cm.Paired)
# 惩罚参数:C=1 
clf = SVC(C=1, kernel='linear')
clf.fit(X, y)

# 最佳函数
w = clf.coef_[0]
a = -w[0] / w[1]
y_3 = a*x_fit - (clf.intercept_[0]) / w[1]
# 最大边距 下界
b_down = clf.support_vectors_[0]
y_down = a* x_fit + b_down[1] - a * b_down[0]
# 最大边距 上界
b_up = clf.support_vectors_[-1]
y_up = a* x_fit + b_up[1] - a * b_up[0]

# 画散点图
X, y = make_blobs(n_samples=60, centers=2, random_state=0, cluster_std=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=plt.cm.Paired)
# 画函数
plt.plot(x_fit, y_3, '-c')
# 画边距
plt.fill_between(x_fit, y_down, y_up, edgecolor='none', color='#AAAAAA', alpha=0.4)
# 画支持向量
plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], edgecolor='b',
            s=80, facecolors='none')

c=0.2时,兼容性更强

X, y = make_blobs(n_samples=60, centers=2, random_state=0, cluster_std=0.9)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=plt.cm.Paired)
# 惩罚参数:C=0.2 
clf = SVC(C=0.2, kernel='linear')
clf.fit(X, y)

x_fit = np.linspace(-1.5, 4)
# 最佳函数
w = clf.coef_[0]
a = -w[0] / w[1]
y_3 = a*x_fit - (clf.intercept_[0]) / w[1]
# 最大边距 下界
b_down = clf.support_vectors_[10]
y_down = a* x_fit + b_down[1] - a * b_down[0]
# 最大边距 上界
b_up = clf.support_vectors_[1]
y_up = a* x_fit + b_up[1] - a * b_up[0]

# 画散点图
X, y = make_blobs(n_samples=60, centers=2, random_state=0, cluster_std=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=plt.cm.Paired)
# 画函数
plt.plot(x_fit, y_3, '-c')
# 画边距
plt.fill_between(x_fit, y_down, y_up, edgecolor='none', color='#AAAAAA', alpha=0.4)
# 画支持向量
plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], edgecolor='b',
            s=80, facecolors='none')

4.3 超平面

还有一种线性不可分的情况:

### 遇到这种数据无法分类
from sklearn.datasets import make_circles
# 画散点图
X, y = make_circles(100, factor=.1, noise=.1, random_state=2019)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=plt.cm.Paired)

clf = SVC(kernel='linear').fit(X, y)

# 最佳函数
x_fit = np.linspace(-1.5, 1.5)
w = clf.coef_[0]
a = -w[0] / w[1]
y_3 = a*X - (clf.intercept_[0]) / w[1]

plt.plot(X, y_3, '-c')

这种情况,不难想到,直接把它立起来!映射到超平面作划分

### 将2d投放到3d超平面
# 数据映射
r = np.exp(-(X[:, 0] ** 2 + X[:, 1] ** 2))

ax = plt.subplot(projection='3d')
ax.scatter3D(X[:, 0], X[:, 1], r, c=y, s=50, cmap=plt.cm.Paired)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

x_1, y_1 = np.meshgrid(np.linspace(-1, 1), np.linspace(-1, 1))
z =  0.01*x_1 + 0.01*y_1 + 0.5
ax.plot_surface(x_1, y_1, z, alpha=0.3)

在 SVC 中,可以用高斯核函数来实现这以功能:kernel=‘rbf’

# 画图
X, y = make_circles(100, factor=.1, noise=.1, random_state=2019)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=plt.cm.Paired)
clf = SVC(kernel='rbf')
clf.fit(X, y)


ax = plt.gca()
x = np.linspace(-1, 1)
y = np.linspace(-1, 1)
x_1, y_1 = np.meshgrid(x, y)
P = np.zeros_like(x_1)
for i, xi in enumerate(x):
    for j, yj in enumerate(y):
        P[i, j] = clf.decision_function(np.array([[xi, yj]]))
ax.contour(x_1, y_1, P, colors='k', levels=[-1, 0, 0.9], alpha=0.5,
            linestyles=['--', '-', '--'])

plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], edgecolor='b',
            s=80, facecolors='none');

5 讨论

支持向量机是笔者认为既有魅力又“来拒去留”的方法,在筛选特征基因的时候运算也不慢,效果也是挺好的。

概念性的原理,又干又硬还是要去细读理解,ChatGPT给推荐的:

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

机器学习实战:Python基于支持向量机SVM-RFE进行分类预测(三) 的相关文章

  • 在函数内的 for 循环上使用 tqdm 来检查进度

    我正在使用 for 循环迭代目录树内的一大组文件 这样做时 我想通过控制台中的进度条来监视进度 因此 我决定使用 tqdm 来实现此目的 目前 我的代码如下所示 for dirPath subdirList fileList in tqdm
  • 从 torch.autograd.gradcheck 导入 zero_gradients

    我想复制代码here https github com LTS4 DeepFool blob master Python deepfool py 并且我在 Google Colab 中运行时收到以下错误 ImportError 无法导入名称
  • 如何同时运行多个功能[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有以下代码 my func1 my func2 my func3 my func4 my func5 是否可以同时计算函数的数据 而
  • 从内存地址创建python对象(使用gi.repository)

    有时我需要调用仅存在于 C 中的 gtk gobject 函数 但返回一个具有 python 包装器的对象 之前我使用过基于 ctypes 的解决方案 效果很好 现在我从 PyGtk import gtk 切换到 GObject intro
  • 使用管理员权限打开cmd(Windows 10)

    我有自己的 python 脚本来管理我的计算机上的 IP 地址 它主要在命令行 Windows 10 中执行netsh命令 您必须具有管理员权限 这是我自己的计算机 我是管理员 运行脚本时我已经使用管理员类型的用户 Adrian 登录 我无
  • 使用 Boto3 超时的 AWS Lambda 函数

    我已经解决了我自己的问题 但无论如何我都会发布它 希望能节省其他人几个小时 我在 AWS 上有一个无服务器项目 使用 Python 将记录插入到 kinesis 队列中 但是 当我使用 boto3 client kinesis 或 put
  • Scrapy 文件管道不下载文件

    我的任务是构建一个可以下载所有内容的网络爬虫 pdfs 在给定站点中 Spider 在本地计算机和抓取集线器上运行 由于某种原因 当我运行它时 它只下载一些但不是全部的 pdf 通过查看输出中的项目可以看出这一点JSON 我已经设定MEDI
  • 将整数系列转换为交替(双元)二进制系列

    我不知道如何最好地表达这个问题 因为在这里谷歌搜索和搜索总是让我找到更复杂的东西 我很确定这是基本的东西 但对于我的生活来说 我找不到一个好的方法来做到这一点下列 给定一个整数序列 比如说 for x in range 0 36 我想将这些
  • 为什么需要设置WORKON_HOME环境变量?

    我已经有一段时间没有使用 python 虚拟环境了 但我也安装了虚拟环境包装器 我的问题是 在文档页面中它说要这样做 export WORKON HOME Envs mkdir p WORKON HOME source usr local
  • 如何知道python运行脚本的路径?

    sys arg 0 给我 python 脚本 例如 python hello py 返回 sys arg 0 的 hello py 但我需要知道 hello py 位于完整路径中的位置 我怎样才能用Python做到这一点 os path a
  • 无法通过 Android 应用程序访问我的笔记本电脑的本地主机

    因此 我在发布此内容之前做了一项研究 我发现的解决方案不起作用 更准确地说 连接到我的笔记本电脑的 IPv4192 168 XXX XXX 没用 连接到10 0 2 2 加上端口 不起作用 我需要测试使用 Django Rest 框架构建的
  • multiprocessing.Queue 中的 ctx 参数

    我正在尝试使用 multiprocessing Queue 模块中的队列 实施 https docs python org 3 4 library multiprocessing html exchang objects Between p
  • 使用会话在 Django 中将文件从一个视图传递到另一个视图

    我当前的工作项目要求我允许用户上传各种格式的文件 目前仅处理 CSV 格式 然后使用包含的数据来绘制图表Pandas http pandas pydata org 图书馆 我决定将图形渲染到模板的最简单方法是为图形创建特定视图 然后将图像从
  • Python在没有pandas的情况下解码excel表

    我正在尝试在 python 中读取 excel 文件而不使用pandas or xlrd 我一直在尝试将结果转换为bytes to utf 8没有任何成功 xls 文件中的数据 colA colB colC spc 1D0 20190705
  • 使用 ElementTree 在 python 中解析 xml

    我对 python 很陌生 我需要解析一些脏的 xml 文件 这些文件需要先清理 我有以下 python 代码 import arff import xml etree ElementTree import re totstring wit
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 数据损坏 C++ 和 Python 之间的管道

    我正在编写一些代码 从 Python 获取二进制数据 将其通过管道传输到 C 对数据进行一些处理 在本例中计算互信息度量 然后将结果通过管道传输回 Python 在测试时 我发现如果我发送的数据是一组尺寸小于 1500 X 1500 的 2
  • 如何将两列 pandas Dataframe 移动并堆叠为一列?

    我有一个下面提到的数据框 ETHNIC SEX USUBJID 0 HISPANIC OR LATINO F 16 1 HISPANIC OR LATINO M 8 2 HISPANIC OR LATINO Total 24 3 NOT H
  • PyQt5按钮lambda变量变成布尔值[重复]

    这个问题在这里已经有答案了 当我运行下面的代码时 它显示如下 为什么 x 不是 x 而是变成布尔值 这种情况仅发生在传递到用 lambda 调用的函数中的第一个参数上 错误的 y home me model some file from P
  • py2exe ImportError:没有名为 的模块

    我已经实现了一个名为 myUtils 的包 它由文件夹 myUtils 文件 组成 init py 和许多名称为 myUtils 的 py 文件 该包包含在 myOtherProject py 中 当我从 Eclipse 运行它们时可以找到

随机推荐

  • Cassandra创建键空间(Keyspace)

    Cassandra查询语言 CQL 可帮助开发人员与Cassandra沟通交互 Cassandra查询语言的语法与SQL非常相似 什么是键空间 Keyspace 键空间 Keyspace 是用于保存列族 用户定义类型的对象 键空间 Keys
  • ios 超签签名服务器搭建(超签)

    为什么要搭建签名服务器吗 因为应用不能上架App Store 使用企业签名频繁掉签造成客户流失 用户体验不好 ios安装的app有几种方式吗 1 App Store 安装 符合法律法规的能走app Store的app 2 企业签名安装 灰色
  • Paxos算法细节详解(一)--通过现实世界描述算法

    Paxos算法细节详解 一 通过现实世界描述算法 Paxos分析 最近研究paxos算法 看了许多相关的文章 概念还是很模糊 觉得还是没有掌握paxos算法的精髓 所以花了3天时间分析了libpaxos3的所有代码 此代码可以从https
  • SpringBoot_5

    SpringBoot对静态资源的映射规则 如果我们需用给web项目中添加css js html文件的话 我们会发现此时没有webapp目录 由于springboot是以jar包的方式打包程序的因此是没有webapp目录的 那么我们的css
  • VMware虚拟机从一台电脑复制到另一台电脑

    在一台电脑上利用虚拟机创建了centos 如果想在家里的电脑虚拟机上也运行centos 不用再重新安装以及漫长的安装等待了 可以利用先前在虚拟机上安装centos生成的 vmx文件和 vmdk文件 拷贝到U盘 再重新导入到新电脑就可以了 省
  • DBMS_STATS分析表 (zt) dbms_stats.set_table_stats 手工设置统计信息

    作用 DBMS STATS GATHER TABLE STATS统计表 列 索引的统计信息 DBMS STATS GATHER TABLE STATS的语法如下 DBMS STATS GATHER TABLE STATS ownname V
  • 关于React + Antd 按需引入样式未生效问题

    第一步 npm install antd 安装antd 第二步 在根目录下创建 babelrc文件 配置按需引入需要用到的plugin npm install save dev import babel import presets bab
  • 跨服务器共享文件,不同服务器之间实现文件共享

    不同服务器之间实现文件共享 内容精选 换一换 表1列出了弹性文件服务的常用功能 在使用弹性文件服务之前 建议您先通过常用概念介绍了解NFS CIFS等基本概念 以便更好地理解弹性文件服务提供的功能 表示该类型的文件系统支持该功能 表示该类型
  • 自定义指令的说明和注册

    自定义指令说明 Vue3 除了核心功能默认内置的指令 v model 和 v show Vue 也允许注册自定义指令 v xxx 注意 代码复用和抽象的主要形式是组件 然而 有的情况下 你仍然需要对普通 DOM 元素进行底层操作 这时候就会
  • Linux/多线程的同步与互斥

    线程安全 多个执行流对资源进行争抢访问 但不会产生数据二义性 线程安全的实现 同步 互斥 同步 通过条件判断实现对临界资源访问的合理性 互斥 通过同一时间对临界资源的唯一访问 实现对临界资源访问的安全性 互斥锁 互斥的实现 互斥锁 在多任务
  • 第一次使用Eclipse:编写简单的Java小程序

    通过前部分的学习 了解了Java的安装和配置 那么从现在开始 要开始自己着手编写Java程序 学习一门编程语言 学会编写的第一个程序一般都是写一个输出 hello World 语句的小程序来表示自己开始学习这门语言 那么这篇教程也不例外 因
  • fsnotify 与 too many open files

    fsnotify fsnotify 是用来监听文件 目录变化的一个 golang 开源库 在 Linux 系统使用中 遇到了too many open files问题 首次尝试 通常 有 2 处配置太小 会触发too many open f
  • 最惊艳的sql

    select from girls where age between 18 and 20 and boyfriend is null order by cup desc
  • 不管人工智能发展如何 开发者都有必要了解 Linux 内核

    Linux内核在计算机世界的地位有目共睹 称它为计算机世界的基石也不为过 而且它还是全球最大的开源项目 几乎最知名的科技公司都参与其中 包括谷歌 Red Hat SUSE Intel Facebook 甲骨文和华为等 当然还包括Linux的
  • 将cmd中输出数据 保存为TXT文本

    原文 http blog sina com cn s blog 6d2d58cd0100x7zw html 在使用Windows XP中的cmd exe工具时 有时候我们想要把我们的输入命令及结果保存起来 但是用复制的方法过于麻烦 有时输出
  • LeetCode 热题 HOT 100:滑动窗口专题

    LeetCode 热题 HOT 100 https leetcode cn problem list 2cktkvj 文章目录 3 无重复字符的最长子串 128 最长连续序列 239 滑动窗口最大值 438 找到字符串中所有字母异位词 3
  • JFLex和JavaCUP简单使用

    由于需要使用到doris中的sql parser功能 所以决定使用其定义好的flex文件和cup文件 生成自己sqlscanner和parser类 步骤如下 1 下载JFlex和JavaCUP程序 路径分别为 https www jflex
  • 机械制造与自动化涉及使用计算机吗,论机械设计制造及自动化中计算机技术

    将计算机技术运用到机械设计制造中 大大提高了机械设计制造智能化水平 在机械设计制造中占据很重要的位置 但我国机械制造设计水平同国外发达国家相比 还存在一定的距离 若是可以加大对计算机技术的研究和探索 对机械制造行业的发展是非常有利的 1机械
  • Flowable入门系列文章29 - Activity解读 05

    1 消息开始事件 描述 甲消息开始事件可用于使用已命名的信息来启动一个过程实例 这有效地允许我们使用消息名称从一组替代开始事件中选择正确的开始事件 在部署具有一个或多个消息启动事件的流程定义时 应考虑以下注意事项 消息开始事件的名称在给定的
  • 机器学习实战:Python基于支持向量机SVM-RFE进行分类预测(三)

    文章目录 1 前言 1 1 支持向量机的介绍 1 2 支持向量机的应用 2 demo数据集演示 2 1 导入函数 2 2 构建数据集拟合 2 3 预测模型及可视化 3 实例演示分类 非SVM 3 1 导入函数和数据 3 2 简单线性分类 3