在数据分析中,最基础的也是最重要的就是回归分析,即研究一个变量与其他变量的关系。这里我们就来看一下如何进行最基本的回归分析以及其可视化
基础的包引用以及初始化设置import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
np.random.seed(sum(map(ord, "regression")))
tips = sns.load_dataset("tips")
tips数据集的的部分内容total_billtipsexsmokerdaytimesize16.991.01FemaleNoSunDinner2
10.341.66MaleNoSunDinner3
21.013.50MaleNoSunDinner3
23.683.31MaleNoSunDinner2
24.593.61FemaleNoSunDinner4
绘制回归关系
regplot()和lmplot()都可以绘制回归关系,推荐regplot()#必要参数:指定x轴、y轴以及数据集
sns.regplot(x="total_bill", y="tip", data=tips)
sns.lmplot(x="total_bill", y="tip", data=tips);
#分离值不太适合回归分析,孤立、图像重叠
sns.regplot(data=tips,x="size",y="tip")
#x_jitter指定抖动范围,便于回归分析
sns.regplot(x="size", y="tip", data=tips, x_jitter=.05)
上面两个例子是对分立值进行的回归分析,后面我们会看到对于分立的数据,我们如何更好的绘图以表示它们anscombe = sns.load_dataset("anscombe")
#使用anscombe.query("dataset == 'I'")确定数据选取范围
sns.regplot(x="x", y="y", data=anscombe.query("dataset == 'I'"),
ci=None, scatter_kws={"s": 100})
绘制回归函数(直接使用一次函数回归显然不对,下面会使用order来指定回归函数的次数)
这也告诉我们,回归计算不要随意回归带入,而应该先画出图,再根据图像的样子选择特定的回归函数sns.lmplot(x="x", y="y", data=anscombe.query("dataset == 'II'"),
ci=None, scatter_kws={"s": 80})
#order指定回归直线的次数
sns.lmplot(x="x", y="y", data=anscombe.query("dataset == 'II'"),
order=2, ci=None, scatter_kws={"s": 80});
多维度回归#hue增加了一个信息维度
sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips);
#使用markers切换点的标志物
sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips,
markers=["o", "x"], palette="Set1");
sns.lmplot(x="total_bill", y="tip", hue="smoker", col="time", data=tips);
sns.lmplot(x="total_bill", y="tip", hue="smoker",
col="time", row="sex", data=tips);
f, ax = plt.subplots(figsize=(5, 5))
sns.regplot(x="total_bill", y="tip", data=tips, ax=ax);
sns.lmplot(x="total_bill", y="tip", col="day", data=tips,
col_wrap=2, height=4);
sns.lmplot(x="total_bill", y="tip", col="day", data=tips,
aspect=.8);