点击上方【AI派】,加星标,每周都送书
原创作者:牵引小哥
微信公众号:牵引小哥讲Python
注:转载或复制请注明出处——牵引小哥
Seaborn
可以使用一行代码绘制数据集的线性回归拟合图表。本期小哥以Seaborn
中的Tips
数据集讲解如何绘制。Seaborn
中可使用lmplot()
和regplot()
两种函数绘制线性回归拟合图表。其中,lmplot()
是regplot()
和FacetGrid
的结合体。所以掌握了regplot()
的用法就掌握了另外一种。为了方便展示,本次分析小哥在Jupyter Notebook中进行。
参考链接:
http://seaborn.pydata.org/generated/seaborn.lmplot.html#seaborn.lmplot
http://seaborn.pydata.org/generated/seaborn.regplot.html#seaborn.regplot
1. Tips数据集
首先导入数据集,观察一下数据集的基本情况。
import seaborn as sns
sns.set(font='SimHei', font_scale=1.3) #设置字体大小
sns.set_style("whitegrid") # 设置绘图style
# 获取数据集
df = sns.load_dataset("tips")
# 查看数据前几行
df.head()
![null](https://i-blog.csdnimg.cn/blog_migrate/12375988ccdb6b699b9932930376adac.png)
2. regplot()
绘制线性回归拟合
# 绘制total_bill和tip的拟合图表:
sns.regplot(x="total_bill", y="tip", data=df)
![null](https://i-blog.csdnimg.cn/blog_migrate/8c8eb2548464871af4222703c03a52df.png)
从结果我们可以看到,regplot()
的拟合带有置信度(默认95%)。可以使用ci
进行调整,调整范围为:[0, 100]整数 or None。
# 关闭置信区间
sns.regplot(x="total_bill", y="tip", ci=None, data=df)
![null](https://i-blog.csdnimg.cn/blog_migrate/957729744c740720bd46ce7fe54f733c.png)
# 绘制多个变量的拟合,通过 hue 映射不同的颜色
sns.lmplot(x="total_bill", y="tip", hue="smoker", data=df)
![null](https://i-blog.csdnimg.cn/blog_migrate/464908c986e26b03f73f9f7be718ee92.png)
# 绘制多个变量的拟合,通过 hue 映射不同的颜色。
# 定义不同的标志符号,设置调色盘为‘Set1’
sns.lmplot(x="total_bill", y="tip", hue="smoker", data=df,
markers=["o", "x"], palette="Set1")
3. lmplot()
绘制线性回归拟合
Seaborn
有一个非常强大的功能:FacetGrid
。这种功能可自动根据变量种类形成分类绘制子图映射。而lmplot()
中就包含这种功能。
首先讲解一下思路,在上一节中绘制了这样一个图表:
![null](https://i-blog.csdnimg.cn/blog_migrate/691006f3921ce48d774666cb8a8bf752.png)
在这个图表中,根据顾客是否吸烟(smoker)绘制了两条回归曲线。那么,如果想要单独绘制这两条曲线在一幅图中,并且有标记呢?这时就可以用到lmplot()
,该函数中主要使用col,row,hue
三个参数控制子图的行列和颜色映射,话不多说,直接看代码。
sns.lmplot(x="total_bill", y="tip", col="smoker", hue='smoker', markers=["o", "x"], data=df)
![null](https://i-blog.csdnimg.cn/blog_migrate/0d75f8e083942d61a6785bde7b831674.png)
为了展示这种绘图方法的优越性,再以day
这一列进行分类:
# 使用 col 参数控制
sns.lmplot(x="total_bill", y="tip", hue="day", col="day", palette="Set1", data=df)
![null](https://i-blog.csdnimg.cn/blog_migrate/13757eaca429137e9deb9fb07a54ef2c.png)
# 使用 row 参数控制
sns.lmplot(x="total_bill", y="tip", hue="day", row="day", palette="Set1", data=df)
![null](https://i-blog.csdnimg.cn/blog_migrate/ccf6d867aa527c165e5845b8ef557bea.png)
# 绘制2x2的子图布局,使用 col_wrap 参数
sns.lmplot(x="total_bill", y="tip", hue="day",
col="day", col_wrap=2, palette="Set1", data=df)
![null](https://i-blog.csdnimg.cn/blog_migrate/27b72250cfefc3c61d1a79f7ab3215ce.png)
文末福利
各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。
这个是一份Python代码速查表
下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图
怎样获取呢?可以添加我们的AI派团队的程序媛姐姐
一定要备注【高清图】哦
????????????????????
➕我们的程序媛小姐姐微信要记得备注【高清图】哦
来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~