Seaborn 线性关系
大多数情况下,我们使用包含多个定量变量的数据集,分析的目标通常是将这些变量与彼此关联起来。这可以通过回归线来实现。
在构建回归模型时,我们经常检查 多重共线性 ,需要查看连续变量之间的相关性,并采取必要的措施来消除多重共线性(如果存在)。在这种情况下,以下技术可以帮助解决问题。
绘制线性回归模型的函数
Seaborn中有两个主要函数用于通过回归确定线性关系的可视化。这些函数分别是 regplot() 和 lmplot() 。
regplot与lmplot的区别
regplot | lmplot |
---|---|
接受多种格式的x和y变量,包括简单的numpy数组,pandas系列对象,或者作为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()
输出
适应不同类型的模型
上面使用的简单线性回归模型非常简单,但在大多数情况下,数据是非线性的,上述方法无法推广回归线。
让我们使用安斯库姆的数据集来进行回归图示例:
示例
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()