Seaborn 线性回归图

Seaborn 线性回归图函数

线性回归图,也叫做 “回归图”,它主要用于表现两个变量之间的线性关系。线性回归图建立在 “Seaborn 散点图” 的基础上,它会在散点图上面增加一条直线(也可能是曲线)。对于这条直线来说,它是使用最小二乘法预测的两个变量的关系:y = ax + b。

在 Seaborn 中,我们可以使用 regplot() 函数来绘制一个线性回归图。

语法:

sns.regplot(data, x, y)

说明:

regplot() 函数接收以下主要参数。

  • data(可选):用于定义数据部分,它是一个 DataFrame。
  • x(可选):用于指定 DataFrame 的哪一列作为 x 轴坐标。
  • y(可选):用于指定 DataFrame 的哪一列作为 y 轴坐标。

regplot() 和 scatterplot() 这两个函数的使用语法几乎是一样的,小伙伴们好好对比一下,这样可以加深理解和记忆。

示例 1:Seaborn 绘制线性回归图

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 设置
sns.set_theme(rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})

# 数据
data = [
    [1, 16],
    [2, 18],
    [3, 20],
    [4, 21],
    [5, 21],
    [6, 23],
    [7, 24],
    [8, 24],
    [9, 26],
    [10, 27]
]
df = pd.DataFrame(data, columns=['A列', 'B列'])
# 绘图
sns.regplot(data=df, x='A列', y='B列')

# 显示
plt.show()

运行之后,效果如下图所示。

Seaborn 绘制线性回归图

分析:

regplot() 函数可以同时绘制一组散点、一条回归线以及该回归的 95% 置信区间。

Seaborn 线性回归图案例

Seaborn 内置了一个数据集 tips,该数据集保存的是某餐厅的营业情况,包括账单、小费、客人信息等,部分内容如下图所示。需要说明的是,“size” 这一列指的是客人订的餐桌类型,比如有些是 2 人桌、有些是 3 人桌等。

Seaborn tips 数据集

示例 2:Seaborn 基本线性回归图

import matplotlib.pyplot as plt
import seaborn as sns

# 设置
sns.set_theme(rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})

# 加载内置数据集
df = sns.load_dataset('tips')
# 重命名列
column_map = {
    'total_bill': '账单',
    'tip': '小费',
    'sex': '性别',
    'smoker': '是否吸烟',
    'day': '星期',
    'time': '餐段',
    'size': '人数'
}
df.rename(columns=column_map, inplace=True)

# 绘制图表
sns.regplot(data=df, x='账单', y='小费')

# 显示
plt.show()

运行之后,效果如下图所示。

Seaborn 基本线性回归图

分析:

sns.regplot(data=df, x='账单', y='小费') 表示将 “账单” 这一列设置为 x 轴坐标,并且将 “小费” 这一列设置为 y 轴坐标。

示例 3:改变颜色

import matplotlib.pyplot as plt
import seaborn as sns

# 设置
sns.set_theme(rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})

# 加载内置数据集
df = sns.load_dataset('tips')
# 重命名列
column_map = {
    'total_bill': '账单',
    'tip': '小费',
    'sex': '性别',
    'smoker': '是否吸烟',
    'day': '星期',
    'time': '餐段',
    'size': '人数'
}
df.rename(columns=column_map, inplace=True)

# 绘制图表
sns.regplot(data=df, x='账单', y='小费', color='orangered')

# 显示
plt.show()

运行之后,效果如下图所示。

Seaborn 线性回归图改变颜色

分析:

如果想要改变线性回归图的整体颜色,我们可以使用 color 这个参数来实现。其中 color 的值可以是关键字(如 'red'),也可以是十六进制 RGB 值(如 '#FFFF00')。

示例 4:散点外观

import matplotlib.pyplot as plt
import seaborn as sns

# 设置
sns.set_theme(rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})

# 加载内置数据集
df = sns.load_dataset('tips')
# 重命名列
column_map = {
    'total_bill': '账单',
    'tip': '小费',
    'sex': '性别',
    'smoker': '是否吸烟',
    'day': '星期',
    'time': '餐段',
    'size': '人数'
}
df.rename(columns=column_map, inplace=True)

# 绘制图表
sns.regplot(data=df, x='账单', y='小费', marker='x')

# 显示
plt.show()

运行之后,效果如下图所示。

Seaborn 线性回归图散点外观

分析:

如果想要改变散点的外观,我们可以使用 marker 这个参数来实现。其中,Seaborn 中的 marker 参数继承了 Matplotlib 中的 marker 参数,两者的取值是一样的。

示例 5:置信区间

import matplotlib.pyplot as plt
import seaborn as sns

# 设置
sns.set_theme(rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})

# 加载内置数据集
df = sns.load_dataset('tips')
# 重命名列
column_map = {
    'total_bill': '账单',
    'tip': '小费',
    'sex': '性别',
    'smoker': '是否吸烟',
    'day': '星期',
    'time': '餐段',
    'size': '人数'
}
df.rename(columns=column_map, inplace=True)

# 绘制图表
sns.regplot(data=df, x='账单', y='小费', marker='x', ci=68)

# 显示
plt.show()

运行之后,效果如下图所示。

Seaborn 线性回归图置信区间

分析:

ci=68 表示使用 68% 的置信区间。“置信区间” 其实是统计学的一个术语,它指的是由样本统计量所构造的总体参数的估计区间。默认情况下,线性回归图使用的是 95% 的置信区间。

最后,我们来总结一下 regplot() 函数的参数,常用的如下表所示。除了这些常用参数,regplot() 还提供了非常多关于统计学方面的参数,小伙伴们有自行查看一下官方文档。

regplot() 函数的参数
参数 说明
data 数据部分
x x 轴坐标
y y 轴坐标
color 整体颜色
marker 散点外观
ci 置信区间

注意: regplot() 函数是轴级函数,不支持 hue 参数(即不能通过颜色自动分组)。如果需要在一个图表中对不同类别(如男性/女性)分别绘制回归线,我们应该使用 sns.lmplot() 函数。

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号