机器学习实战: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进行分类预测(三) 的相关文章

  • 按每个元素中出现的数字对字符串列表进行排序[重复]

    这个问题在这里已经有答案了 我有一个脚本 其目的是对不断下载到服务器上的空间数据集文件进行排序和处理 我的列表目前大致如下 list file t00Z wrff02 grib2 file t00Z wrff03 grib2 file t0
  • 创建 xyz 海拔数据的曲面图

    我正在尝试用 python 创建一座山的表面图 其中我有一些 xyz 数据 最终结果应该类似于that https i stack imgur com rKQV0 png 该文件的格式如下 616000 0 90500 0 3096 712
  • 在Python中将大文件(25k条目)加载到dict中很慢?

    我有一个大约有 25000 行的文件 它是 s19 格式的文件 每行就像 S214780010 00802000000010000000000A508CC78C 像这样的事情怎么样 我做了一个测试文件 只有一行S21478001000802
  • 在 python 中发送标头[重复]

    这个问题在这里已经有答案了 我有以下 python 脚本 我想发送 假 标头信息 以便我的应用程序就像 Firefox 一样运行 我怎么能这么做呢 import urllib urllib2 cookielib username passw
  • 如何在plotly(python)中的刻度标签和图形之间添加空格?

    如果我使用绘图创建水平条形图 则每个条形的标签都与图表相对应 我想在标签和图表之间添加一些空间 填充 边距 我怎样才能做到这一点 Example import plotly offline as py import plotly graph
  • DataFrame.loc 的“索引器太多”

    我读了关于切片器的文档 http pandas pydata org pandas docs stable advanced html using slicers一百万次 但我从来没有理解过它 所以我仍在试图弄清楚如何使用loc切片Data
  • 获取字符串模板中所有标识符列表的函数(Python)

    对于标准库string template在Python中 有没有一个函数可以获取所有标识符的列表 例如 使用以下 xml 文件
  • pandas 数据框的最大大小

    我正在尝试使用读取一个有点大的数据集pandas read csv or read stata功能 但我不断遇到Memory Errors 数据帧的最大大小是多少 我的理解是 只要数据适合内存 数据帧就应该没问题 这对我来说不应该是问题 还
  • Python Apache Beam 端输入断言错误

    我对 Apache Beam Cloud Dataflow 还很陌生 所以如果我的理解不正确 我深表歉意 我正在尝试通过管道读取大约 30 000 行长的数据文件 我的简单管道首先从 GCS 打开 csv 从数据中提取标题 通过 ParDo
  • 将列表值转换为 pandas 中的行

    我有数据帧 其中一列具有相同长度的 numpy ndarray 值 df list 0 Out 92 array 0 0 0 0 29273096 0 30691767 0 27531403 我想将这些列表值转换为数据框并从 df iloc
  • 如何在Python中手动对数字列表进行排序?

    规格 Ubuntu 13 04 Python 3 3 1 背景 Python的初学者 遇到了这个 手动排序 问题 我被要求做的事情 让用户输入 3 个数值并将它们存储在 3 个不同的变量中 不使用列表或排序算法 手动将这 3 个数字从小到大
  • argparse 不检查位置参数

    我正在创建一个脚本 它使用 argparse 接受位置参数和可选参数 我已经阅读了 Doug 的教程和 python 文档 但找不到答案 parser argparse ArgumentParser description script t
  • 类变量:“类列表”与“类布尔值”[重复]

    这个问题在这里已经有答案了 我不明白以下示例的区别 一次类的实例可以更改另一个实例的类变量 而另一次则不能 示例1 class MyClass object mylist def add self self mylist append 1
  • 机器学习的周期性数据(例如度角 -> 179 与 -179 相差 2)

    我使用 Python 进行核密度估计 并使用高斯混合模型对多维数据样本的可能性进行排名 每一条数据都是一个角度 我不确定如何处理机器学习的角度数据的周期性 首先 我通过添加 360 来删除所有负角 因此所有负角都变成了正角 179 变成了
  • Kivy TextInput 水平和垂直对齐(文本居中)

    如何在 Kivy 的 TextInput 中水平居中文本 I have the following screen But I want to centralize my text like this 这是我的 kv 语言的一部分 BoxLa
  • 增强迪基-富勒测试中的 BIC 在 Python 中到底是如何工作的?

    这个问题是关于 statsmodels tsa stattools python 库 adfuller 中的增强迪基 富勒测试实现 原则上 AIC 和 BIC 应该计算一组可用模型的信息标准 并选择最好的模型 信息损失最低的模型 但它们在增
  • Python GTK3 Treeview 向上或向下移动选择

    如何在树视图中向上或向下移动所选内容 我的想法是 我可以使用向上和向下按钮将选择向上移动一行或向下移动一行 我的 Treeview 使用 ListStore 不确定这是否重要 首先 我将使用我熟悉的 C 代码 如果您在将其翻译为 Pytho
  • 在Python中随机交错2个数组

    假设我有两个数组 a 1 2 3 4 b 5 6 7 8 9 我想将这两个数组交错为变量 c 注意 a 和 b 不一定具有相同的长度 但我不希望它们以确定性的方式交错 简而言之 仅仅压缩这两个数组是不够的 我不想要 c 1 5 2 6 3
  • 为什么我会在 Python 字符串格式中使用除 %r 之外的其他内容?

    我偶尔会使用 Python 字符串格式 这可以像这样完成 print int i Float f String s 54 34 434 some text 但是 这也可以这样做 print int r Float r String r 54
  • JSONDecodeError:额外数据:Python [重复]

    这个问题在这里已经有答案了 我使用以下代码从文件加载 json file file name obj list with open file as f for json obj in f obj list append loads json

随机推荐

  • 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