今天看了林轩田老师的感知机算法,心血来潮想要做个可视化过程,以便观察更新的过程。

现将学习成果做个记录,下面是画出来的图,这是初始的状态,后面会通过算法找到一条经过原点的直线将两堆数据分割开来。

直线以及两堆数据是随机生成的,下面介绍画出这个图的步骤主要有哪些:

  1. 导入需要的工具包,这个没得说,而且是在jupyter notebook中,所有会使用%matplotlib inline

    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
  2. 生成数据

    # 设置随机种子
    np.random.seed(325) # 随机生成o数据
    o_data_x = np.random.randint(40, 80, 5)
    o_data_y = np.random.randint(20, 80, 5)
    o_label = np.array([0,0,0,0,0]) # 随机生成x数据
    x_data_x = np.random.randint(10, 50, 5)
    x_data_y = np.random.randint(60, 90, 5)
    x_label = np.array([1,1,1,1,1]) # 随机生成初始的直线
    w1_w2 = np.random.random(2)
    t = np.linspace(-100,100, 18)
  3. 画图

    # 设置画布
    plt.figure(figsize=(8, 8)) # 作点
    plt.scatter(o_data_x, o_data_y, c='b', marker='o', label='0')
    plt.scatter(x_data_x, x_data_y, c='r', marker='x', label='1')
    plt.legend() # 作初始线
    plt.plot(t, -w1_w2[0]/w1_w2[1]*t) # 获取当前的坐标轴, gca = get current axis
    ax = plt.gca() # 设置标题,也可用plt.title()设置
    ax.set_title('Inital', fontsize=20, loc='left') # 设置右边框和上边框,隐藏
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none') # 设置x坐标轴为下边框
    ax.xaxis.set_ticks_position('bottom')
    # 设置y坐标轴为左边框
    ax.yaxis.set_ticks_position('left') # 设置x轴, y轴在(0, 0)的位置
    ax.spines['bottom'].set_position(('data', 0))
    ax.spines['left'].set_position(('data', 0)) # ax.set_xticks与plt.xticks功能一样,都是自行定义x坐标轴的刻度;y轴同理。在这里使用避免原点出现两个同样的0
    ax.set_xticks([-100, -75, -50, -25, 0, 25, 50, 75, 100])
    ax.set_yticks([-100, -75, -50, -25, 25, 50, 75, 100])
    plt.savefig('output.jpg')

总结

上述画图涉及的知识点包括:

  1. 画直线图
  2. 画散点图
  3. 设置坐标轴的原点、刻度等

使用matlibplot.pyplot设置画图的坐标系的更多相关文章

  1. matplotlib.pyplot设置画布主题

    import matplotlib.pyplot as plt # 定义一个画图函数 def sinplot(flip = 1): x = np.linspace(0,10,100) for i in ...

  2. Matplotlib.pyplot 把画图保存为图片

    在plt.show()之前执行plt.savefig()函数即可. 简单例子: import matplotlib.pyplot as plt x=[1,2,3,4,5] y=[10,5,15,10, ...

  3. matplotlib:plt.rcParams设置画图的分辨率,大小等信息

    主要作用是设置画的图的分辨率,大小等信息 plt.rcParams['figure.figsize'] = (8.0, 4.0) # 设置figure_size尺寸 plt.rcParams['ima ...

  4. 使用pyplot和seaborn进行画图

    pyplot的一些知识 matplotlab中的对象: matplotlib是面向对象的,在画图的时候我们了解一些对象,对我们画图是有帮助的.绘图的对象大致分为三层: backend_bases.Fi ...

  5. Matplotlib数据可视化(2):三大容器对象与常用设置

      上一篇博客中说到,matplotlib中所有画图元素(artist)分为两类:基本型和容器型.容器型元素包括三种:figure.axes.axis.一次画图的必经流程就是先创建好figure实例, ...

  6. Matlab绘图基础——利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制多个坐标轴)

    描述 axes在当前窗口中创建一个包含默认属性坐标系 axes('PropertyName',propertyvalue,...)创建坐标系时,同时指定它的一些属性,没有指定的使用DefaultAxe ...

  7. python3绘图示例6-2(基于matplotlib,绘图流程介绍及设置等)

    #!/usr/bin/env python# -*- coding:utf-8 -*- import os import numpy as npimport matplotlib as mpltfro ...

  8. 利用matlibplot绘制雷达图

    之前在一些数据分析案例中看到用 Go 语言绘制的雷达图,非常的漂亮,就想着用matlibplot.pyplot也照着画一个,遗憾的是matlibplot.pyplot模块中没有直接绘制雷达图的函数,不 ...

  9. Python:matplotlib.pyplot

    翻译总结自:matplotlib.pyplot - Matplotlib 3.4.3 documentation 函数 说明 acorr x的自相关性图 angle_spectrum 角度谱 anno ...

随机推荐

  1. php支持连接sqlserver数据库

    php支持连接sqlserver数据库 1.软件配置 Win7 64 +wampserver2.2d-x32+SQL Server 2008 R2数据库,wamp2.2中的php版本是5.3.10. ...

  2. Android-Java-封装

    先看一个未封装的Demo案例一: package android.java.oop03; class Person { int age; } public class PottingDemo { pu ...

  3. hdu 1.2.3

    很简单的算法基础题...闰年判断以及计算 #include<iostream> #include<cstdio> using namespace std; int main() ...

  4. Linux分区之parted命令

      之前使用最多的分区命令无疑是fdisk了,大多数情况下fdisk可以满足日常工作上的需求,极个别情况就需要使用parted命令了,至于及个别情况就要从MBR和GPT说起. MBR主引导扇区   主 ...

  5. 深入探索AngularJS

    目录 深入探索AngularJS 作用域Scope是DOM和Directives交互的抽象 Scope是POJO对象 Scope是上下文 Scope继承树 Scope附加功能 正交功能 Element ...

  6. nginx-1.12.0版本(编译安装)-自定义安装路径

    nginx-1.12.0版本(编译安装)-自定义安装路径 安装路径:/application/nginx-1.12.0 1.前期准备 安装编译需要的gcc和gcc-c++ yum install -y ...

  7. 微信小游戏canvas操作

    这几天在做项目的时候,想在游戏画面之前,在Canvas上面画上一张背景图,代码如下     let ctx = canvas.getContext('2d')    export default cl ...

  8. oracle查询语句查询增加一列内容

    select a,sys_guid() as b from mytable sys_guid() 是生成带分隔符(-)的GUID的自定义函数 查询B表的内容插入A表,MY_ID是A表的主键不可为空,因 ...

  9. wpf 的依赖属性只能在loaded 事件之后才能取到

    wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  InitializeComponent(); 之后取不到 wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  ...

  10. 【转】AngularJs HTTP请求响应拦截器

    任何时候,如果我们想要为请求添加全局功能,例如身份认证.错误处理等,在请求发送给服务器之前或服务器返回时对其进行拦截,是比较好的实现手段. angularJs通过拦截器提供了一个从全局层面进行处理的途 ...