机器学习-基于支持向量机的分类预测

一、SVM的介绍

支持向量机(Support Vector Machine,SVM)是一个非常优雅的算法,具有非常完善的数学理论,常用于数据分类,也可以用于数据的回归预测中,由于其其优美的理论保证和利用核函数对于线性不可分问题的处理技巧,在上世纪90年代左右,SVM曾红极一时。

二、Demo实践

  • Step1:库函数导入
  • Step2:构建数据集并进行模型训练
  • Step3:模型参数查看
  • Step4:模型预测
  • Step5:模型可视化

2.1 库函数导入

在这里插入图片描述

2.2 构建数据集并进行模型训练

在这里插入图片描述

2.3 模型参数查看

在这里插入图片描述
运行结果:
在这里插入图片描述

2.4 模型预测

在这里插入图片描述
运行结果:
在这里插入图片描述

2.5 模型可视化

在这里插入图片描述
在这里插入图片描述
可以对照之前的逻辑回归模型的决策边界,我们可以发现两个决策边界是有一定差异的(可以对比两者在X,Y轴上的截距),这说明这两个不同在相同数据集上找到的判别线是不同的,而这不同的原因其实是由于两者选择的最优目标是不一致的。接下来我们进行SVM的一些简单介绍。

三、支持向量机的介绍

我们常常会碰到这样的一个问题,首先给你一些分属于两个类别的数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在需要一个线性分类器,将这些数据分开来。
我们可能会有多种分法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
那么现在有一个问题,两个分类器,哪一个更好呢?
为了判断好坏,我们需要引入一个准则:好的分类器不仅仅是能够很好的分开已有的数据集,还能对未知数据集 进行两个的划分。
假设,现在有一个属于红色数据点的新数据
在这里插入图片描述
[<matplotlib.lines.Line2D at 0x7ff7fea7d748>]
在这里插入图片描述
可以看到,此时黑色的线会把这个新的数据集分错,而蓝色的线不会。
我们刚刚举的例子可能会带有一些主观性。
那么如何客观的评判两条线的健壮性呢?
此时,我们需要引入一个非常重要的概念:最大间隔。
最大间隔刻画着当前分类器与数据集的边界,以这两个分类器为例:
在这里插入图片描述
<matplotlib.collections.PolyCollection at 0x7ff7ff40c518>
在这里插入图片描述
可以看到, 蓝色的线最大间隔是大于黑色的线的。
所以我们会选择蓝色的线作为我们的分类器。
在这里插入图片描述
<matplotlib.collections.PolyCollection at 0x7ff7ff363b38>
在这里插入图片描述
那么,我们现在的分类器是最优分类器吗?
或者说,有没有更好的分类器,它具有更大的间隔?
答案是有的。
为了找出最优分类器,我们需要引入我们今天的主角:SVM
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
<matplotlib.collections.PathCollection at 0x7ff7fe55a048>
在这里插入图片描述
带黑边的点是距离当前分类器最近的点,我们称之为支持向量。
支持向量机为我们提供了在众多可能的分类器之间进行选择的原则,从而确保对未知数据集具有更高的泛化性。

3.1 软间隔

在这里插入图片描述
<matplotlib.collections.PathCollection at 0x7ff7fe07c240>
在这里插入图片描述
这种情况并不容易找到这样的最大间隔。
于是我们就有了软间隔,相比于硬间隔而言,我们允许个别数据出现在间隔带中。
我们知道,如果没有一个原则进行约束,满足软间隔的分类器也会出现很多条。
所以需要对分错的数据进行惩罚,SVC 函数中,有一个参数 C 就是惩罚参数。
惩罚参数越小,容忍性就越大。
以 C=1 为例子,比如说:
在这里插入图片描述
<matplotlib.collections.PathCollection at 0x7ff7fddd24a8>
在这里插入图片描述
惩罚参数 C=0.2 时,SVM 会更具包容性,从而兼容更多的错分样本:
在这里插入图片描述
<matplotlib.collections.PathCollection at 0x7ff7f9b67cf8>
在这里插入图片描述

3.2 超平面

在这里插入图片描述
[<matplotlib.lines.Line2D at 0x7ff7f8adb780>,
<matplotlib.lines.Line2D at 0x7ff7f8849e80>]
在这里插入图片描述
我们可以将二维(低维)空间的数据映射到三维(高维)空间中。
此时,我们便可以通过一个超平面对数据进行划分
所以,我们映射的目的在于使用 SVM 在高维空间找到超平面的能力。
在这里插入图片描述
<mpl_toolkits.mplot3d.art3d.Poly3DCollection at 0x7ff7f64fc390>
在这里插入图片描述

在 SVC 中,我们可以用高斯核函数来实现这以功能:kernel=‘rbf’在这里插入图片描述
在这里插入图片描述
此时便完成了非线性分类。

  • 2
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 机器学习实战Python基于支持向量机(SVM)是一种强大的分类器算法。SVM是一种监督学习方法,可以用于解决二分类和多分类问题。 SVM的基本思想是找到一个最佳的超平面,将数据分割成不同的类别。超平面被定义为在n维空间中具有n-1维的子空间。这个子空间可以将不同类别的数据点分开,并且尽可能地最大化边界。这就意味着SVM在分类时尽量避免误分类,并且对于新的未知数据具有较好的泛化能力。 在Python中,我们可以使用scikit-learn库中的SVM实现机器学习任务。首先,我们需要导入必要的库和数据集。然后,我们可以对数据集进行预处理,如特征缩放和数据划分。接下来,我们可以创建一个SVM分类器,并使用训练数据进行模型的训练。训练完成后,我们可以使用测试数据进行预测,并评估模型的性能。 SVM还有一些重要的参数需要调节,如C和gamma。C表示惩罚项的权重,用于控制分类器的错误率和边界的平衡。较大的C值会减小错误率,但可能导致边界过拟合。gamma表示径向基函数核的参数,影响分类器的决策边界的灵活性。较大的gamma值会导致边界更加精确地拟合训练数据,但可能导致过拟合。 总的来说,机器学习实战Python基于支持向量机(SVM)是一个强大的分类器算法,可以用于解决二分类和多分类问题。在实际应用中,我们需要注意调节参数,使得分类器具有良好的泛化能力。 ### 回答2: 机器学习实战是一本非常实用的书籍,其中详细介绍了如何使用Python编程语言基于支持向量机(SVM)进行机器学习实践。 支持向量机是一种强大的监督学习算法,可以用于解决分类和回归问题。该算法通过寻找一个最优的超平面来分割样本空间,使得不同类别的样本尽可能远离超平面。实际上,SVM通过最大化支持向量与超平面的距离,来确保分类的准确性和泛化能力。 在书籍中,作者通过经典的例子和详细的代码示例,展示了如何应用Python编程语言和scikit-learn库来构建和训练SVM模型。读者将学会如何准备数据集,进行特征选择和数据预处理,选择合适的SVM参数以及评估模型的性能。 此外,书中还强调了交叉验证、网格搜索和模型调优等重要概念。这些概念是整个机器学习过程中不可或缺的一部分,能够帮助我们提高模型的准确性和可靠性。 机器学习实战还提供了丰富的示例和应用,涵盖了多个领域,如文本分类、手写数字识别和人脸识别等。通过这些实例,读者可以深入理解SVM在实际问题中的应用。 总而言之,机器学习实战是一本非常实用的书籍,提供了丰富的例子和代码,使读者能够快速上手并应用SVM算法解决实际问题。无论是对于初学者还是有一定机器学习经验的人来说,这本书都是一本值得推荐的学习资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值