python绘制散点图:二分类样本

本文介绍了如何使用Python Matplotlib库绘制二元变量散点图,通过'+'和'o'标记区分正样本和负样本,以便于数据探索和理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做机器学习数据集的探索时,需要绘制二变量的散点图,散点图要能够区分正负样本。
如何用python绘制散点图呢?思路其实不复杂:
1.绘制正样本,使用“+”图标
2.在同一张图上绘制负样本,使用“o”图标
3.展示正负样本

import numpy as np
import matplotlib.pyplot as plt

# # 载入数据
# data = np.loadtxt('./ex1data1.txt', delimiter=',')

#区分正负样本
pos_data=data[data[:,2]==1]
neg_data=data[data[:,2]!=1]

# 绘图
# 绘制正样本
plt.scatter(pos_data[:,0],pos_data[:,1],marker='+')
# 绘制负样本
plt.scatter(neg_data[:,0],neg_data[:,1],marker='o')
plt.show()

绘制的图形如下:
在这里插入图片描述

### 使用 Seaborn 和 Matplotlib 绘制带四个象限的散点图 为了实现这一目标,可以利用 `matplotlib` 或者更高层次封装的 `seaborn` 库来简化绘图过程。下面展示的是通过这两个库之一——Seaborn 来完成四象限散点图绘制的例子。 #### 导入必要的库并准备数据集 首先导入所需的 Python 数据科学工具包,并创建一个用于演示的数据框: ```python import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 创建随机数种子以便结果可重复 np.random.seed(0) # 构建模拟数据帧 data = {'x': np.random.randn(100), 'y': np.random.randn(100)} df = pd.DataFrame(data) ``` #### 设置图形参数和画布布局 接着设置好图形大小以及定义中心位置作为划分各象限的基础线: ```python plt.figure(figsize=(8, 8)) # 定义原点坐标 origin_x, origin_y = df['x'].mean(), df['y'].mean() # 添加水平和垂直分割线以区分不同象限 plt.axhline(y=origin_y, color='gray', linestyle='--') plt.axvline(x=origin_x, color='gray', linestyle='--') # 调整网格样式使背景更加清晰易读 sns.set_style("whitegrid") ``` #### 实现散点图并标注各个象限 最后一步就是实际调用函数生成散点图,并且可以通过自定义颜色映射等方式增强视觉效果;同时,在适当的位置添加文字标签指示每个区域所属的具体象限名称: ```python scatter_plot = sns.scatterplot( data=df, x="x", y="y", hue=np.sign(df[['x','y']].values).sum(axis=1), palette={-2:'red', 0:'blue', 2:'green'}, legend=False ) for i in range(-1, 2, 2): for j in range(-1, 2, 2): scatter_plot.text(i*(abs(min(df.x))+max(abs(df.x)))/4,j*(abs(min(df.y))+max(abs(df.y)))/4,f'Q{i*j}', fontsize=12,horizontalalignment='center',verticalalignment='center') plt.title('Scatter Plot with Four Quadrants Using Seaborn and Matplotlib') plt.show() ``` 上述代码片段展示了如何使用 Seaborn 结合 Matplotlib 的功能轻松地创建出具有明确分区特征的散点图[^1]。值得注意的是,这里采用了简单的逻辑运算符组合 (`sign`) 对点的颜色进行了分类处理,从而直观地区分出了位于不同象限内的样本点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值