Seaborn 简明教程

Seaborn - Linear Relationships

在大多数情况下,我们使用包含多个定量变量的数据集,并且分析的目标通常是将这些变量相互关联。这可以通过回归线来完成。

在构建回归模型时,我们经常检查我们必须查看所有连续变量组合之间相关性的 multicollinearity, ,并且如果存在多重共线性,则将采取必要的措施将其删除。在这样的情况下,以下技术会有所帮助。

Functions to Draw Linear Regression Models

Seaborn 中有两种主要函数可用于可视化通过回归确定的线性关系。这些函数是 regplot()lmplot()

regplot vs lmplot

regplot

lmplot

以各种格式接受 x 和 y 变量,包括简单的 numpy 数组、pandas Series 对象或对 pandas DataFrame 中变量的引用

具有数据作为必需参数,并且必须将 x 和 y 变量指定为字符串。这种数据格式称为“长格式”数据

现在让我们绘制出这些图。

Example

在本例中使用相同的数据绘制回归图和 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()

Output

你可以看到两个图之间的尺寸差异。

zoomed magnifier

当其中一个变量采用离散值时,我们也可以拟合线性回归

Example

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()

Output

rugged

Fitting Different Kinds of Models

上面使用的简单线性回归模型非常容易拟合,但在大多数情况下,数据是非线性的,并且上述方法不能概括回归线。

让我们使用具有回归图的安斯科姆数据集 −

Example

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()
dotted

在这种情况下,数据非常适合具有较小方差的线性回归模型。

让我们看另一个数据偏差较大的示例,其中显示了最佳拟合线不是很好。

Example

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()

Output

halfs

此图显示数据点与回归线的较大偏差。可以使用 lmplot()regplot() 可视化此类非线性和高阶图。这些图可以拟合多项式回归模型来探索数据集中简单类型的非线性趋势 −

Example

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()

Output

parabola