️Python 有着强大的绘图库 matplotlib, 该库集成了大量的绘图函数,可以满足我们平时绝大多数的绘图需求。其中,matplotlib 库是 Python 进行可视化功能的主要软件包,matplot 本是 matlab 中的绘图库,matplotlib 其实就是在 Python 实现 matplot 的功能。
️利用 Python 绘制散点图与在 matlab 中操作类似,以数据集 fourclass 为例(数据集的获取方式见文章 Python 对数据集进行归一化处理并存储为 mat 格式的文件
️样本的两个属性值作为在平面图中的二维坐标,根据样本的标签值给散点相应的颜色,代码如下:
from scipy.io import loadmat #导入 loadmat, 用于对 mat 格式文件进行操作
import numpy as np
import matplotlib.pyplot as plt #导入绘图操作用到的库
#读取数据得到一个字典类型数据,需要根据键名 ’data‘ 取出对应的值。
data = loadmat(r'C:\Users\Desktop\fourclass.mat')['data']
fig = plt.figure() # 创建画布
ax = fig.add_subplot(111)
idx_1 = np.where(data[:, -1] == 1) # 找出标签为1的样本
idx_2 = np.where(data[:, -1] == -1) # 找出标签为-1的样本
#绘制散点图
p1 = ax.scatter(data[idx_1, 0], data[idx_1, 1], marker='.', color='black', s=8)
p2 = ax.scatter(data[idx_2, 0], data[idx_2, 1], marker='.', color='red', s=8)
plt.show() #显示散点图
️首先,创建一个画布,然后再调用add_subplot()
函数,111 表示这个画布中,第一行第一列中的第一个子图,add_subplot(111)
就是在创建的画布中创建第一个子图,这个子图在第一行第一列,一般只画一个图就使用 111 就可以了。
️其次,根据样本的标签找出对应的样本。fourclass 数据集是二分类数据集,如果你使用的是其他数据集,有 N 个分类,可以依此类推设置 idx_N = np.where(data[:, -1] == N) # 找出第N类
。
️然后,绘制散点图。以 p1 所在行的代码为例,ax.scatter()
函数第一个参数 data[idx_1, 0] 是样本的横坐标,第二个参数 data[idx_1, 1] 是样本的纵坐标,marker 表示散点的形状, color 表示颜色参数,s 表示散点的像素大小。值得注意的是,这里所绘制的散点图是二维的,碰巧我们使用的数据集也是只有两个条件属性,可以比较好的刻画样本的分布,如果你使用的数据集的条件属性大于2个,自己综合考虑选择两个代表性的属性分别作为横、纵坐标。