基于sklearn的简单分类器

2023-11-19

基于sklearn的简单分类器

输入   输出
3  1    0
2  5	1
1  8	1
6  4	0
5  2	0
3  5	1
4  7	1
4  -1	0
7  5

已知部分输入和部分输出求当输入为7、5时输出为多少?

我们观察上面的规律不难发现,当输入的第一个数大于第二个数时输出为0,当输入的第一个数小于第二个数时输出为1,因此我们可根据输入和输出关系利用matplotlib.pyplot在坐标系中将输入对应点将输出对应点的颜色表示出来。

"""
简单的分类器
"""
# 导入需求模块
import numpy as np
import matplotlib.pyplot as mp

x = np.array([
    [3, 1],
    [2, 5],
    [1, 8],
    [6, 4],
    [5, 2],
    [3, 5],
    [4, 7],
    [4, -1]])
y = np.array([0, 1, 1, 0, 0, 1, 1, 0])
# 文件名称
mp.figure("Simple Classification", facecolor="lightgray")
# 设置标题
mp.title("Simple Classification", fontsize=20)
# x坐标
mp.xlabel("x", fontsize=16)
# y坐标
mp.ylabel("y", fontsize=16)
# 坐标大小
mp.tick_params(labelsize=10)
# 输出为散点图并赋予点的颜色
mp.scatter(x[:, 0], x[:, 1], c=y, cmap="brg", s=60)
# 窗口显示
mp.show()

显示效果如下:
效果散点图

倘若要对这两类输出做一个简单的分类我们假设可以在图像上做出一条y=kx的直线,位于直线上方的点都视为输出为1的类,位于直线下方的点都视为输出为0的类,而这条y=kx的直线即为0类和1类的分界线,由于数据样本有限我们可以做出以上假设。

假如该平面有若干个点,他们密集的分布在该平面内,我们利用上述发现的规律——将第一个数字大于第二个数字的输入标记为0,将第一个数字小于第二个数字的输入标记为1,然后在图像上显示出来,他们所构成的图形的界限即为分类边界。

"""
简单的分类器
"""
# 导入需求模块
import numpy as np
import matplotlib.pyplot as mp

x = np.array([
    [3, 1],
    [2, 5],
    [1, 8],
    [6, 4],
    [5, 2],
    [3, 5],
    [4, 7],
    [4, -1]])
y = np.array([0, 1, 1, 0, 0, 1, 1, 0])
# 绘制分类边界
# l:左边界,r:右边界,h:点和点的水平距离(为了防止点在边界上,我们把边界再向外移动一个像素的距离)
l, r, h = x[:, 0].min()-1, x[:, 0].max()+1, 0.05
# b:底边界,t:顶边界,v:点和点的竖直距离
b, t, v = x[:, 1].min()-1, x[:, 1].max()+1, 0.05
# 生成二维点阵
grid_x = np.meshgrid(np.arange(l, r, h), np.arange(b, t, v))
# 将二维点阵展平拼接成若干行两列的二维数组
flat_x = np.c_[grid_x[0].ravel(), grid_x[1].ravel()]
# 初始化y,并定义数据类型为int型
flat_y = np.zeros(len(flat_x), dtype=int)
# 将第一列小于第二列的标记为1
flat_y[flat_x[:, 0] < flat_x[:, 1]] = 1
flat_y[flat_x[:, 0] > flat_x[:, 1]] = 0
grid_y = flat_y.reshape(grid_x[0].shape)

# 文件名称
mp.figure("Simple Classification", facecolor="lightgray")
# 设置标题
mp.title("Simple Classification", fontsize=20)
# x坐标
mp.xlabel("x", fontsize=16)
# y坐标
mp.ylabel("y", fontsize=16)
# 坐标大小
mp.tick_params(labelsize=10)
# 用颜色绘制网格
mp.pcolormesh(grid_x[0], grid_x[1], grid_y, cmap="gray")
# 输出为散点图并赋予点的颜色
mp.scatter(x[:, 0], x[:, 1], c=y, cmap="brg", s=60)
# 窗口显示
mp.show()

显示效果如下:

在这里插入图片描述

我们可以看到,根据我们的假设,使用若干个点来对模型进行检验,分界线确实为y=kx的直线,样本点依然位于分类标准两侧,因此假设成立。

注:仔细放大图片位于黑白交界处的棱角受水平和竖直的步长影响,为了提高图形质量可缩小步长即可,笔者为了提高运行效率因此步长选用0.05。

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

基于sklearn的简单分类器 的相关文章

随机推荐

  • 轻量级分割网络总结

    目录 ddrnet STDC Seg 重新思考BiSeNet ExtremeC3Net DFANet NfS SegNet 好像未开源 人像分割
  • 操作系统常见面试题及答案

    操作系统 从系统观点看 是计算机系统的一个系统软件 管理和控制计算机系统中的资源 从用户观点看 操作系统是用户与计算机之间的接口 从软件观点看 操作系统是程序和数据结构的集合 1 什么是进程 process 和线程 thread 有何区别
  • linux中esc无法正常退出insert

    ctrl c
  • 在android 输出log 信息 用于调试

    要想在 jni native 代码中看打印信息 printf 是不行的 需使用 android log print 如下所示 android log print ANDROID LOG INFO ProjectName I am d n n
  • python的文件操作

    一 文件的基本操作 1 读文件read f open filename r encoding utf 8 data f read 读文件 f close 关闭文件 1 绝对路径的易错点 文件路径中 前要加转义字符 或者 使用r使转义字符失效
  • Android declare-styleable:自定义控件的属性(attr.xml,TypedArray)的使用

    android 自定义属性类型的使用 转自 http www cnblogs com ufocdy archive 2011 05 27 2060221 html 做Android布局是件很享受的事 这得益于他良好的xml方式 使用xml可
  • 关于define与defined的区别

    1 define用来定义一个常量 常量也是全局范围的 不用管作用域就可以在脚本的任何地方访问 常量 一个常量一旦被定义 就不能再改变或者取消定义 如 define path root www web define 为常量的值root www
  • 什么是计算机域名和域名定义?

    domain is a very popular term used in computer and information technology Users generally do not know or misinterpret th
  • BAT面试题 - 找一个无序实数数组中的最大差值

    题目描述 一个无序的实数数组a i 要求求里面大小相邻的实数的差的最大值 比如 double a 1 5 4 0 2 100 这个无序的数组 相邻的数的最大差值为100 5 95 题目分析 这题有个简单的做法 首先就是对数组进行一个排序 然
  • 免费送书啦!细数Github大神们的开源书籍!

    作者 弗拉德 来源 弗拉德 公众号 fulade me Go 系列 Mastering GO 推荐语 本书适用于Golang程序员 您之前应该阅读有关Go的介绍性书籍 本书的内容包括但不限于并发 网络编程 垃圾回收 组合 GO UNIX系统
  • STM32F10X_系统定时器(systick)

    目录 1 参考文献 2 systick简介 3 systick寄存器 3 1 控制及状态寄存器 3 2 重装载数值寄存器 3 3 当前数值寄存器 3 4 校准数值寄存器 4 systick中断时间计算 5 systick配置库函数 1 参考
  • YOLOv5 提升模型训练结果小技巧

    一 数据集 1 每类图片数 建议 gt 1500张 2 每类实例数 推荐每类标签实例数 gt 10000 3 图片多样性 必须代表部署环境 对于现实世界我们推荐图片来自一天中不同时间 不同季节 不同天气 不同光照 不同角度和不同相机等 4
  • 线程封闭概念

    线程封闭概念 为什么要有线程封闭这个概念呢 多线程中访问共享可变数据时 涉及到线程间数据同步的问题 并不是所有时候都需要共享数据 所以线程封闭概念就出来了 在Java中线程封闭该怎么做呢 可以通过两个方法来做 ThreadLocal 1 T
  • 34 openEuler使用LVM管理硬盘-创建并挂载文件系统

    文章目录 34 openEuler使用LVM管理硬盘 创建并挂载文件系统 34 1 创建文件系统 34 2 手动挂载文件系统 34 3 自动挂载文件系统 34 openEuler使用LVM管理硬盘 创建并挂载文件系统 在创建完逻辑卷之后 需
  • android代码获取当前package的de目录

    获取de目录首先要获取DE CONTEXT Context deContext getApplicationContext createDeviceProtectedStorageContext 然后通过DE CONTEXT获取de目录 S
  • SpringBoot + MyBatis-plus + Druid 实现简单增删查改、动态条件查询和分页功能

    本文主要讲解 SpringBoot集成Mybatis plus 数据库连接池使用alibaba的druid 实现简单增删查改 动态条件查询和分页功能 项目整体结构 项目添加相关框架依赖 pom xml
  • 辐射强度、辐亮度、辐照度——一文搞定

    先写定义 上图是从网上看到的并重写的 其中我们最容易混淆的就是辐射强度 辐亮度 辐照度的关系 如果我们没有接触专业领域 那么我们可能接触最多的就是辐射强度 而这种现象是不对的 因为我们一般考虑的均为这光好强呀 照得屋里特别亮 这里的光亮 我
  • untiy的纹理格式介绍

    Desktop RGB Compressed DXT1 压缩的RGB纹理 这是最常见的漫反射纹理格式 4位 像素 32 KB 256x256 RGBA Compressed DXT5 压缩的RGBA纹理 这是漫反射和高光控制纹理的主要格式
  • 如何区分网线是几类的_怎么看网线是几类?

    我来回答下本行业的问题 我是做智能化弱电的 在弱电监控系统中网线是连接弱电局域网中必不可少的材料 也是综合布线系统中最常用的一种传输材质 网线是由4对线8芯组成 每芯都有颜色区分 用于数据传输 网线的分类 网线按照性能划分 可以分为五类线
  • 基于sklearn的简单分类器

    基于sklearn的简单分类器 输入 输出 3 1 0 2 5 1 1 8 1 6 4 0 5 2 0 3 5 1 4 7 1 4 1 0 7 5 已知部分输入和部分输出求当输入为7 5时输出为多少 我们观察上面的规律不难发现 当输入的第一