机器学习:Python中如何使用支持向量机(SVM)算法

这篇具有很好参考价值的文章主要介绍了机器学习:Python中如何使用支持向量机(SVM)算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python svm,机器学习,算法,支持向量机,机器学习,python,聚类,AP算法,深度学习

(简单介绍一下支持向量机,详细介绍尤其是算法过程可以查阅其他资)

在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别、分类(异常值检测)以及回归分析。

其具有以下特征:

(1)SVM可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。

(2) SVM通过最大化决策边界的边缘来实现控制模型的能力。尽管如此,用户必须提供其他参数,如使用核函数类型和引入松弛变量等。

(3)SVM一般只能用在二类问题,对于多类问题效果不好。

1. 下面是代码及详细解释(基于sklearn包):

from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt

#准备训练样本
x=[[1,8],[3,20],[1,15],[3,35],[5,35],[4,40],[7,80],[6,49]]
y=[1,1,-1,-1,1,-1,-1,1]

##开始训练
clf=svm.SVC()  ##默认参数:kernel='rbf'
clf.fit(x,y)

#print("预测...")
#res=clf.predict([[2,2]])  ##两个方括号表面传入的参数是矩阵而不是list

##根据训练出的模型绘制样本点
for i in x:
    res=clf.predict(np.array(i).reshape(1, -1))
    if res > 0:
        plt.scatter(i[0],i[1],c='r',marker='*')
    else :
        plt.scatter(i[0],i[1],c='g',marker='*')

##生成随机实验数据(15行2列)
rdm_arr=np.random.randint(1, 15, size=(15,2))
##回执实验数据点
for i in rdm_arr:
    res=clf.predict(np.array(i).reshape(1, -1))
    if res > 0:
        plt.scatter(i[0],i[1],c='r',marker='.')
    else :
        plt.scatter(i[0],i[1],c='g',marker='.')
##显示绘图结果
plt.show()

结果如下图:

python svm,机器学习,算法,支持向量机,机器学习,python,聚类,AP算法,深度学习

从图上可以看出,数据明显被蓝色分割线分成了两类。但是红色箭头标示的点例外,所以这也起到了检测异常值的作用。

2.在上面的代码中提到了kernel='rbf',这个参数是SVM的核心:核函数

重新整理后的代码如下:

from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt

##设置子图数量
fig, axes = plt.subplots(nrows=2, ncols=2,figsize=(7,7))
ax0, ax1, ax2, ax3 = axes.flatten()

#准备训练样本
x=[[1,8],[3,20],[1,15],[3,35],[5,35],[4,40],[7,80],[6,49]]
y=[1,1,-1,-1,1,-1,-1,1]
'''
    说明1:
       核函数(这里简单介绍了sklearn中svm的四个核函数,还有precomputed及自定义的)
        
    LinearSVC:主要用于线性可分的情形。参数少,速度快,对于一般数据,分类效果已经很理想
    RBF:主要用于线性不可分的情形。参数多,分类结果非常依赖于参数
    polynomial:多项式函数,degree 表示多项式的程度-----支持非线性分类
    Sigmoid:在生物学中常见的S型的函数,也称为S型生长曲线

    说明2:根据设置的参数不同,得出的分类结果及显示结果也会不同
    
'''
##设置子图的标题
titles = ['LinearSVC (linear kernel)',  
          'SVC with polynomial (degree 3) kernel',  
          'SVC with RBF kernel',      ##这个是默认的
          'SVC with Sigmoid kernel']
##生成随机试验数据(15行2列)
rdm_arr=np.random.randint(1, 15, size=(15,2))

def drawPoint(ax,clf,tn):
    ##绘制样本点
    for i in x:
        ax.set_title(titles[tn])
        res=clf.predict(np.array(i).reshape(1, -1))
        if res > 0:
           ax.scatter(i[0],i[1],c='r',marker='*')
        else :
           ax.scatter(i[0],i[1],c='g',marker='*')
     ##绘制实验点
    for i in rdm_arr:
        res=clf.predict(np.array(i).reshape(1, -1))
        if res > 0:
           ax.scatter(i[0],i[1],c='r',marker='.')
        else :
           ax.scatter(i[0],i[1],c='g',marker='.')

if __name__=="__main__":
    ##选择核函数
    for n in range(0,4):
        if n==0:
            clf = svm.SVC(kernel='linear').fit(x, y)
            drawPoint(ax0,clf,0)
        elif n==1:
            clf = svm.SVC(kernel='poly', degree=3).fit(x, y)
            drawPoint(ax1,clf,1)
        elif n==2:
            clf= svm.SVC(kernel='rbf').fit(x, y)
            drawPoint(ax2,clf,2)
        else :
            clf= svm.SVC(kernel='sigmoid').fit(x, y)
            drawPoint(ax3,clf,3)
    plt.show()

结果如图:

python svm,机器学习,算法,支持向量机,机器学习,python,聚类,AP算法,深度学习

由于样本数据的关系,四个核函数得出的结果一致。在实际操作中,应该选择效果最好的核函数分析。

3.在svm模块中还有一个较为简单的线性分类函数:LinearSVC(),其不支持kernel参数,因为设计思想就是线性分类。如果确定数据

可以进行线性划分,可以选择此函数。跟kernel='linear'用法对比如下:

from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt

##设置子图数量
fig, axes = plt.subplots(nrows=1, ncols=2,figsize=(7,7))
ax0, ax1 = axes.flatten()

#准备训练样本
x=[[1,8],[3,20],[1,15],[3,35],[5,35],[4,40],[7,80],[6,49]]
y=[1,1,-1,-1,1,-1,-1,1]

##设置子图的标题
titles = ['SVC (linear kernel)',  
          'LinearSVC']

##生成随机试验数据(15行2列)
rdm_arr=np.random.randint(1, 15, size=(15,2))

##画图函数
def drawPoint(ax,clf,tn):
    ##绘制样本点
    for i in x:
        ax.set_title(titles[tn])
        res=clf.predict(np.array(i).reshape(1, -1))
        if res > 0:
           ax.scatter(i[0],i[1],c='r',marker='*')
        else :
           ax.scatter(i[0],i[1],c='g',marker='*')
    ##绘制实验点
    for i in rdm_arr:
        res=clf.predict(np.array(i).reshape(1, -1))
        if res > 0:
           ax.scatter(i[0],i[1],c='r',marker='.')
        else :
           ax.scatter(i[0],i[1],c='g',marker='.')

if __name__=="__main__":
    ##选择核函数
    for n in range(0,2):
        if n==0:
            clf = svm.SVC(kernel='linear').fit(x, y)
            drawPoint(ax0,clf,0)
        else :
            clf= svm.LinearSVC().fit(x, y)
            drawPoint(ax1,clf,1)
    plt.show()
 
 

 结果如图所示:

python svm,机器学习,算法,支持向量机,机器学习,python,聚类,AP算法,深度学习


为帮助更多对人工智能感兴趣的小伙伴们能够有效的系统性的学习以及论文的研究,小编特意制作整理了一份人工智能学习资料给大家,整理了很久,非常全面。

大致内容包括一些人工智能基础入门视频和文档+AI常用框架实战视频、计算机视觉、机器学习、图像识别、NLP、OpenCV、YOLO、pytorch、深度学习与神经网络等学习资料、课件源码、国内外知名精华资源、以及AI热门论文等全套学习资料。

python svm,机器学习,算法,支持向量机,机器学习,python,聚类,AP算法,深度学习
需要以上这些文中提到的资料,请点击此处→【人工智能全套完整VIP资料】即可免费获取。

看完三件事❤️

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的『点赞和评论』,才是我创造的动力。
  • 关注作者公众号 『 AI技术星球 』,不定期分享原创知识。
  • 关注后回复【007】扫码即可获取学习资料包。
  • 同时可以期待后续文章ing🚀。
     

 python svm,机器学习,算法,支持向量机,机器学习,python,聚类,AP算法,深度学习

 文章来源地址https://www.toymoban.com/news/detail-763266.html

到了这里,关于机器学习:Python中如何使用支持向量机(SVM)算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

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

    2024年02月05日
    浏览(63)
  • python机器学习决策树和SVM向量机算法实现红酒分类

    经典的红酒分类数据集是指UCI机器学习库中的Wine数据集。该数据集包含178个样本,每个样本有13个特征,可以用于分类任务。 具体每个字段的含义如下: alcohol:酒精含量百分比 malic_acid:苹果酸含量(克/升) ash:灰分含量(克/升) alcalinity_of_ash:灰分碱度(以mEq/L为单位)

    2024年02月08日
    浏览(41)
  • SVM(支持向量机)-机器学习

    支持向量机(Support Vector Machine,SVM) 是一种用于分类和回归分析的监督学习算法 。它属于机器学习中的一类强大而灵活的模型,广泛应用于模式识别、图像分类、自然语言处理等领域。 基本原理: SVM的基本原理是通过找到能够有效分隔不同类别的超平面来进行分类。在二维

    2024年02月03日
    浏览(52)
  • 机器学习-支持向量机SVM

    在本练习中,我们将使用支持向量机(SVM)来构建垃圾邮件分类器。 我们将从一些简单的2D数据集开始使用SVM来查看它们的工作原理。 然后,我们将对一组原始电子邮件进行一些预处理工作,并使用SVM在处理的电子邮件上构建分类器,以确定它们是否为垃圾邮件。 我们要做

    2024年02月12日
    浏览(55)
  • 机器学习——支持向量机SVM

    支持向量机(SVM)是一种二类分类模型,其基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大,间隔最大使它有别于感知机,支持向量机也可通过核技巧使它成为非线性分类器。支持向量机的学习策略是间隔最大化,可将其转化为一个求解凸二次

    2024年01月17日
    浏览(57)
  • 使用SimpleMKL算法实现多核支持向量机(SVM)的Python代码详解

    在本文中,我们将详细介绍如何使用SimpleMKL算法实现多核支持向量机(SVM)的Python代码。我们将首先介绍SimpleMKL算法的基本原理,然后通过实例代码来演示如何在Python中实现该算法。最后,我们将讨论该算法的优缺点以及可能的改进方法。 1. SimpleMKL算法简介 多核学习(Mult

    2024年02月14日
    浏览(144)
  • 【机器学习】SVM支持向量机模型

     本站原创文章,转载请说明来自 《老饼讲解-机器学习》 ml.bbbdata.com 目录 一. SVM的目标和思想    1.1 SVM硬间隔模型的原始目的 1.2 SVM的直接目标 1.3 什么是支持向量  二. SVM的支持平面的表示方式 2.1 支持面表示方式的初步思路 2.2 初步思路的缺陷与改进 2.3 支持面的最终表示

    2023年04月23日
    浏览(205)
  • 机器学习(六)支持向量机(SVM)

    目录 1.间隔与支持向量 1.1线性可分 1.2支持向量 1.3 最大间隔超平面 2.对偶问题 2.1拉格朗日乘子法 2.2 SMO算法 2.3SMO算法代码实现 3.核函数 4. SVM实例(手写体数字识别) 5.实验总结 支持向量机(SVM) 是有监督学习中最有影响力的机器学习算法之一,一般用于解决二分类问题(

    2024年02月09日
    浏览(56)
  • 【机器学习】支持向量机SVM入门

    相较于之前学习的线性回归和神经网络,支持向量机(Supprot Vector Machine,简称SVM)在拟合复杂的非线性方程的时候拥有更出色的能力,该算法也是十分经典的算法之一。接下来我们需要学习这种算法 首先我们回顾逻辑回归中的经典假设函数,如下图: 对于任意一个实例 (

    2024年02月15日
    浏览(56)
  • Python | 机器学习之SVM支持向量机

    ​​​​​​ ​ 🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《人工智能奇遇记》 🔖墨香寄清辞:诗馀墨痕深,梦漫星辰寂。 曲径通幽意犹在,剑指苍穹气势立。 目录结构 1. 机器学习之SVM支持向量机概念 1.1 机器学习 1.2 SVM支持向量机 2. SVM支持向量机算法 2.1 实验目的

    2024年02月05日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包