- Seaborn 教程
- Seaborn - 首页
- Seaborn - 简介
- Seaborn - 环境设置
- 导入数据集和库
- Seaborn - 图形美观
- Seaborn - 调色板
- Seaborn - 直方图
- Seaborn - 核密度估计
- 可视化成对关系
- Seaborn - 绘制分类数据
- 观测值的分布
- Seaborn - 统计估计
- Seaborn - 绘制宽格式数据
- 多面板分类图
- Seaborn - 线性关系
- Seaborn - Facet Grid
- Seaborn - Pair Grid
- 函数参考
- Seaborn - 函数参考
- Seaborn 有用资源
- Seaborn - 快速指南
- Seaborn - 有用资源
- Seaborn - 讨论
Seaborn - 线性关系
大多数情况下,我们使用包含多个定量变量的数据集,并且分析的目标通常是将这些变量相互关联。这可以通过回归线来完成。
在构建回归模型时,我们经常检查多重共线性,我们需要查看所有连续变量组合之间的相关性,并在存在多重共线性时采取必要的措施将其消除。在这种情况下,以下技术会有所帮助。
绘制线性回归模型的函数
Seaborn 中有两个主要的函数用于可视化通过回归确定的线性关系。这些函数是regplot()和lmplot()。
regplot 与 lmplot
regplot | lmplot |
---|---|
接受以各种格式表示的 x 和 y 变量,包括简单的 NumPy 数组、Pandas Series 对象或 Pandas DataFrame 中变量的引用。 | 将数据作为必需参数,并且必须将 x 和 y 变量指定为字符串。此数据格式称为“长格式”数据。 |
现在让我们绘制图形。
示例
在此示例中,使用相同的数据绘制 regplot 和 lmplot 图。
import pandas as pd import seaborn as sb from matplotlib import pyplot as plt df = sb.load_dataset('tips') sb.regplot(x = "total_bill", y = "tip", data = df) sb.lmplot(x = "total_bill", y = "tip", data = df) plt.show()
输出
您可以看到两个图之间的大小差异。
当其中一个变量取离散值时,我们也可以拟合线性回归。
示例
import pandas as pd import seaborn as sb from matplotlib import pyplot as plt df = sb.load_dataset('tips') sb.lmplot(x = "size", y = "tip", data = df) plt.show()
输出
拟合不同类型的模型
上面使用的简单线性回归模型非常易于拟合,但在大多数情况下,数据是非线性的,并且上述方法无法概括回归线。
让我们使用 Anscombe 的数据集以及回归图 -
示例
import pandas as pd import seaborn as sb from matplotlib import pyplot as plt df = sb.load_dataset('anscombe') sb.lmplot(x="x", y="y", data=df.query("dataset == 'I'")) plt.show()
在这种情况下,数据非常适合线性回归模型,方差较小。
让我们再看一个数据偏差较大的示例,这表明最佳拟合线效果不佳。
示例
import pandas as pd import seaborn as sb from matplotlib import pyplot as plt df = sb.load_dataset('anscombe') sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'")) plt.show()
输出
该图显示了数据点与回归线的较大偏差。可以使用lmplot()和regplot()可视化此类非线性、高阶关系。这些可以拟合多项式回归模型来探索数据集中简单的非线性趋势 -
示例
import pandas as pd import seaborn as sb from matplotlib import pyplot as plt df = sb.load_dataset('anscombe') sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"),order = 2) plt.show()
输出
广告