sns.regplot 和 sns.distplot 这两个图形的使用场景。
sns.regplot 用来比较两个变量的关系,是否符合线性回归。一般用来比较特征变量和标签变量上。sns.distplot 是直方图和核密度图(sns.kdeplot)的结合。用来看单个连续型变量的分布。
顺便说下直方图和条形图区别:
- 直方图:先分箱,然后计算每个分箱频数的数据分布。直方图一般用于数字特征(连续型);
- 条形图:一般用于类别特征,条形图有间距,直方图没有。
先用小费数据集画出图形。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import seaborn as sns from pandas import Series,DataFrame import pandas as pd import matplotlib.pyplot as plt %matplotlib inline
tips = sns.load_dataset('tips')
tips.head()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| plt.figure(figsize=(14, 4))
ax=plt.subplot(1,3,1) sns.regplot(x='total_bill', y='tip', data=tips, ax=ax, scatter_kws={'marker':'.','s':3,'alpha':0.3}, line_kws={'color':'g'}); plt.xlabel('total_bill') plt.ylabel('tip')
ax=plt.subplot(1,3,2) sns.regplot(x='total_bill', y='size', data=tips, ax=ax, scatter_kws={'marker':'.','s':3,'alpha':0.3}, line_kws={'color':'k'}); plt.xlabel('total_bill') plt.ylabel('size')
ax=plt.subplot(1,3,3) sns.distplot(tips['total_bill'].dropna()) plt.xlabel('total_bill')
plt.show()
|
图一是两个连续型变量比较。total_bill 直接拟合成一条直线,tip 是散点图。但就这个例子图形来看,这两个数据集有一定相关性,但相关性不强。
图二是一个连续型变量和一个分类变量关系比较。按照例子看基本是不相关的。
图三是直方图 + 核密度曲线。用来看单个变量的分布情况。
sns.regplot 和 sns.distplot 可以同时用,同时查看特征分布以及特征和变量关系。