使用Sklearn的SVM接口实现鸢尾花分类

2023-11-10

Iris Data Set

Iris Data Set(鸢尾属植物数据集)是历史比较悠久的数据集,它首次出现在著名的英国统计学家和生物学家Ronald Fisher 1936年的论文《The use of multiple measurements in taxonomic problems》中,被用来介绍线性判别式分析。在这个数据集中,包括了三类不同的鸢尾属植物:Iris Setosa,Iris Versicolour,Iris Virginica。每类收集了50个样本,因此这个数据集一共包含了150个样本。
该数据集测量了所有150个样本的4个特征,分别是:sepal length(花萼长度)、sepal width(花萼宽度)、petal length(花瓣长度)、petal width(花瓣宽度),以上四个特征的单位都是厘米。

Sklearn的支持向量机(SVM)算法

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

# 定义网格函数
def make_meshgrid(x, y, h=.02):
    """Create a mesh of points to plot in
    Parameters
    ----------
    x: data to base x-axis meshgrid on
    y: data to base y-axis meshgrid on
    h: stepsize for meshgrid, optional
    Returns
    -------
    xx, yy : ndarray
    """
    x_min, x_max = x.min() - 1, x.max() + 1
    y_min, y_max = y.min() - 1, y.max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),np.arange(y_min, y_max, h))
    return xx, yy
    
# 绘制填充颜色的二维等高线图_
def plot_contours(ax, clf, xx, yy, **params):
    """Plot the decision boundaries for a classifier.
    Parameters
    ----------
    ax: matplotlib axes object
    clf: a classifier
    xx: meshgrid ndarray
    yy: meshgrid ndarray
    params: dictionary of params to pass to contourf, optional
    """
    # np.c_中的c是column的缩写,是按列叠加两个矩阵的意思,就是把两矩阵左右相加
    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    out = ax.contourf(xx, yy, Z, **params)
    return out

# import some data to play with
iris = datasets.load_iris()
# Take the first two features. We could avoid this by using a two-dim dataset
X = iris.data[:, :2]
y = iris.target

# we create an instance of SVM and fit out data. We do not scale our data since we want to plot the support vectors
C = 1.0  # SVM regularization parameter
models = (svm.SVC(kernel='linear', C=C),
          svm.LinearSVC(C=C, max_iter=10000),
          svm.SVC(kernel='rbf', gamma=0.7, C=C),
          svm.SVC(kernel='poly', degree=3, gamma='auto', C=C))
models = (clf.fit(X, y) for clf in models)
# title for the plots
titles = ('SVC with linear kernel',
          'LinearSVC (linear kernel)',
          'SVC with RBF kernel',
          'SVC with polynomial (degree 3) kernel')
# Set-up 2x2 grid for plotting.
fig, sub = plt.subplots(2, 2)
plt.subplots_adjust(wspace=0.4, hspace=0.4)
plt.rcParams['savefig.dpi'] = 600 #图片像素
plt.rcParams['figure.dpi'] = 600 #分辨率

X0, X1 = X[:, 0], X[:, 1]
xx, yy = make_meshgrid(X0, X1)
for clf, title, ax in zip(models, titles, sub.flatten()):
    plot_contours(ax, clf, xx, yy,cmap=plt.cm.coolwarm, alpha=0.8)
    ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors='k')
    ax.set_xlim(xx.min(), xx.max())
    ax.set_ylim(yy.min(), yy.max())
    ax.set_xlabel('Sepal length')
    ax.set_ylabel('Sepal width')
    ax.set_xticks(())
    ax.set_yticks(())
    ax.set_title(title)
plt.show()

在这里插入图片描述

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

使用Sklearn的SVM接口实现鸢尾花分类 的相关文章

随机推荐

  • maven学习笔记

    1 什么是Maven maven是跨平台的项目管理工具 主要服务于基于java平台 包括j2ee和j2se 的项目构建 依赖管理和项目信息管理 可以帮助开发者管理jar包 一步构建项目 从清理 编译 测试 报告直接到打包 部署 2 Mave
  • 关于洗牌算法的一点总结

    之前写斗地主的时候简单写了一个洗牌函数 基本思路是先产生一个顺序数组 遍历数组 每次产生一个 1 n 随机数 把这个随机数作为下标取出数组里的数与当前位置的数交换 当时也没多想 反正能打乱数组顺序就行 后来跟师兄吃饭的时候聊起来 说到面试里
  • 解决MATLAB Simulink 无法打开高版本模型的问题

    参考及致谢MATLAB版本 R2019a 不同版本的设置方式可能不同 报错内容 解决方案 Step1 Step2 Step3 按照上述流程操作后 就可以在低版本simulink中浏览使用高版本创建的模型文件 slx文件 了
  • 上门维修保养小程序系统开发

    用户通过小程序添加绑定需要售后维保的机器设备 然后用户通过小程序线上提交报修需求清单 后台分配安排人员上门维修 标记确认订单完成 同时提供在线服务商城 积分 优惠劵抵扣会员卡管理会员等级服务 核心功能 维修服务 保养服务 使用攻略 服务商城
  • c++数据读取、保存之dcm格式(需要有dcmtk)

    include
  • 【Shader笔记】Unity Shader基础

    参考书籍 UNITY SHADER入门精要 一 材质 Material 与 Unity Shader 效果的实现需要材质和Unity Shader配合使用 常见流程为 1 创建一个材质 2 创建一个Unity Shader 并赋予给上一步新
  • python粒子群算法工具包_python进阶教程:实现粒子群算法(PSO)详解

    本文来源于公众号 csdn2299 喜欢可以关注公众号 程序员学府 这篇文章主要介绍了Python编程实现粒子群算法 PSO 详解 涉及粒子群算法的原理 过程 以及实现代码示例 具有一定参考价值 需要的朋友可以了解下 文章目录 1 原理 2
  • Transformer学习笔记

    Transformer是第一个完全依赖于自我注意力机制来计算输入和输出表征的转导模型 而不使用序列对齐的RNNs或卷积 Figure 1 左 Transformer整体结构 右 编解码器内部结构图 Encoder Decoder 编码器 由
  • 虚拟机没有显示ip地址

    之所以写这篇博客是因为有个同学刚搭建完虚拟机但没有IP地址 为了帮助那个同学和回顾知识 所以有了这篇博客 而且网上大部分博客都没提到networkmanager的问题 所以这边就记录一下 一 检查网络连接模式是否为NAT模式 在VMware
  • Redis学习:Redis实现乐观锁

    实际这部分是接着事务那一块 加了一个watch命令 这里要有一个乐观锁和悲观锁的概念 悲观锁 很悲观 认为什么时候都会出现问题 无论做什么都会加锁 乐观锁 很乐观 认为什么时候都不会出现问题 所以不会上锁 更新数据的时候去判断一下 在此期间
  • Python提取PDF中的图片

    插播一条老家自产的糖心苹果 多个品种 欢迎选购 有问题随时私信我 来自雪域高原的馈赠 海拔2000米的大凉山高原生态糖心苹果 https blog csdn net qq 15969343 article details 126107252
  • VUE H5 页面借助 dsbridge 嵌入到 app 中(前端)

    H5 页面嵌入 app 中 不得不面对 web 和 native 之间进行交互的问题 比如 传递参数 调用函数等 至于交互的桥梁目前 github 上有一些开源的 其中使用最广的是 jsBridge 然而 最近刚开源了一个新项目 dsbri
  • Canal实现Mysql数据同步至Redis、Elasticsearch

    文章目录 1 Canal简介 1 1 MySQL主备复制原理 1 2 canal工作原理 2 开启MySQL Binlog 3 安装Canal 3 1 下载Canal 3 2 修改配置文件 3 3 启动和关闭 4 SpringCloud集成
  • 【Lua】Table根据value排序

    使用lua开发需要把有用的数据全部存进Table里 lua也提供了一个sort接口来给table排序 但是sort的实现也是基于冒泡排序 他默认table的key是从1开始的 这样就会造成当我们的key是一些特殊的标志位 比如游戏中背包数据
  • 深入浅出JMS(二)--ActiveMQ简单介绍以及安装

    现实的企业中 对于消息通信的应用一直都非常的火热 而且在J2EE的企业应用中扮演着特殊的角色 所以对于它研究是非常有必要的 上篇博文深入浅出JMS 一 JMS基本概念 我们介绍了消息通信的规范JMS 我们这篇博文介绍一款开源的JMS具体实现
  • Ubuntu:配置环境变量的两种常用方法( .bashrc 和 /etc/profile )

    环境变量 什么是环境变量 简单地说 环境变量就是当前环境下的参数或者变量 如果说的专业一点就是指在操作系统中用来指定操作系统的一些参数 如最常见的环境变量 PATH 它的用途就是当用户要求系统运行一个程序而没有告诉它程序所在的完整路径时 系
  • iphone数据传输已取消怎么办_iPhone被停用怎么办?iPhone如何解除停用状态?

    面对iPhone已停用状态 我们该怎么解决 这或许会是很多人存在的疑问 有个好消息是 在你的iPhone被停用的情况下 我们还是有办法能够让iPhone复活 虽然 过程有点曲折 但是努力的话总归是有结果的 下面将为大家介绍下 iPhone被
  • c语言函数返回变量的地址,浅谈C语言函数返回值--局部变量和局部变量地址

    下面的内容是在C专家编程里面看到的 摘录于此 在C语言中 局部变量的作用域只在函数内部 在函数返回后 局部变量的内存就会被释放 如果函数只是返回局部变量 那么这个局部变量会被复制一份传回被调用处 但是如果函数返回的是局部变量的地址 那么就会
  • Vmware中鼠标移动时滚轮失效没反应Ubuntu20.04.1

    通过安装imwheel解决 先更新软件源 sudo apt get update 安装imwheel sudo apt get install imwheel 在 目录下创建 imwheelrc文件 cd sudo vim imwheelr
  • 使用Sklearn的SVM接口实现鸢尾花分类

    Iris Data Set Iris Data Set 鸢尾属植物数据集 是历史比较悠久的数据集 它首次出现在著名的英国统计学家和生物学家Ronald Fisher 1936年的论文 The use of multiple measurem