Seaborn - 线性关系

  • 简述

    大多数时候,我们使用包含多个定量变量的数据集,而分析的目标通常是将这些变量相互关联。这可以通过回归线来完成。
    在构建回归模型时,我们经常检查multicollinearity,我们必须看到所有连续变量组合之间的相关性,如果存在多重共线性,我们将采取必要的措施来消除。在这种情况下,以下技术会有所帮助。
  • 绘制线性回归模型的函数

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

    输出

    抛物线