Seaborn 线性关系
大多数时候,我们使用的数据集包含多个定量变量,而分析的目标往往是将这些变量相互联系起来。这可以通过回归线来完成。
在建立回归模型时,我们经常检查 多重共线性, 我们不得不看到所有连续变量的组合之间的相关性,如果存在多重共线性,将采取必要的行动来消除。在这种情况下,下面的技术会有所帮助。
绘制线性回归模型的函数
在Seaborn中,有两个主要的函数可以将通过回归确定的线性关系可视化。这些函数是 regplot() 和 lmplot() 。
regplot vs 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()
输出