数据可视化 seaborn绘图(1)

seaborn是基于matplotlib的数据可视化库.提供更高层的抽象接口.绘图效果也更好. 用seaborn探索数据分布 绘制单变量分布 绘制二变量分布 成对的数据关系可视化 绘制单变量分布 seaborn里最常用的观察单变量分布的函数是distplot()。默认地,这个函数会绘制一个直方图,并拟合一个核密度估计.如下所示: x = np.random.normal(size=100) sns.distplot(x); 首先解释一下啥叫核密度估计.wiki wiki里的一大堆数学证明看着就可怕.... 简单地说:所谓核密度估计,就是采用平滑的峰值函数(“核”)来拟合观察到的数据点,从而对真实的概率分布曲线进行模拟. 说人话的话,就是:我们有很多样本,但再多的样本,也是离散的.所谓核密度估计,就是根据离散采样,估计连续密度分布. 所以样本量得大,假如你就3,5个样本,还有什么好估计的. 那核密度估计的原理是啥呢? 你上网搜索的话,大概率会搜到这个: 核密度函数的原理比较简单,在我们知道某一事物的概率分布的情况下,如果某一个数在观察中出现了,我们可以认为这个数的概率密度很大,和这个数比较近的数的概率密度也会比较大,而那些离这个数远的数的概率密度会比较小。 基于这种想法,针对观察中的第一个数,我们可以用K去拟合我们想象中的那个远小近大概率密度。对每一个观察数拟合出的多个概率密度分布函数,取平均。如果某些数是比较重要的,则可以取加权平均。 说实在的,我还是觉得很难理解....... 好在,一图胜千言! 复制代码 x = np.random.normal(0, 1, size=30) bandwidth = 1.06 * x.std() * x.size ** (-1 / 5.) support = np.linspace(-4, 4, 200) kernels = [] for x_i in x: kernel = stats.norm(x_i, bandwidth).pdf(support) kernels.append(kernel) plt.plot(support, kernel, color="r") sns.rugplot(x, color=".2", linewidth=3); 复制代码 . 即:假如有x个样本,如果我们用Gaussian Kernel Density(就是常说的正态分布啦),对每一个样本,我们都认为这个样本处在一个正态分布的峰值位置,(因为我们已经发现这个样本了).这样,就拟合出了x个正态分布曲线. 将这些曲线叠加取平均再正则化,就得到了最终的核密度估计分布曲线. 这里我们用的是kernel是gaussian.其实kernel有很多种,其中gau是最常用的. kernel : {‘gau’ | ‘cos’ | ‘biw’ | ‘epa’ | ‘tri’ | ‘triw’ }, optional displot参数 sns.distplot(x, kde=False, rug=True); rug=True:绘制出离散样本 sns.distplot(x, bins=20, kde=False, rug=True); bins=20:直方图的"柱子"的个数 更多参数,看文档去吧:displot api 绘制双变量分布 最常用的方法是散点图绘制 matplotlib.scatter seaborn中是jointplot 首先我们生成一个二元正态分布矩阵 mean, cov = [0, 1], [(1, .5), (.5, 1)] data = np.random.multivariate_normal(mean, cov, 200) df = pd.DataFrame(data, columns=["x", "y"]) 散点图绘制sns.jointplot(x="x", y="y", data=df); 这种散点图有一个问题,相同的点会覆盖在一起.导致我们看不出来浓密和稀疏. 六边形图 hexbin sns.jointplot(x=x, y=y, kind="hex", color="k"); 核密度分布估计 jointpoint函数使用JointGrid对象来绘图.为了提供更多的灵活性,jointpoint()返回一个JointGrid对象,你可以绘制出自己定制的图. g = sns.jointplot(x="x", y="y", data=df, kind="kde", color="m") g.plot_joint(plt.scatter, c="w", s=30, linewidth=1, marker="+") g.ax_joint.collections[0].set_alpha(0) g.set_axis_labels("$X$", "$Y$"); 绘制成对的数据关系可视化 以著名的iris数据集为例. iris数据集有4个特征.那么两两组成一个pair的话,就有16种组合.用pairplot()绘制如下: 和jointplot类似,pairplot是基于PairPlot对象的.直接用PairPlot对象,可以更加灵活地绘制你想要的图 比如绘制iris数据集的核密度分布估计. g = sns.PairGrid(iris) g.map_diag(sns.kdeplot) g.map_offdiag(sns.kdeplot, n_levels=6); 分类: 机器学习 标签: 机器学习, seaborn 好文要顶 关注我 收藏该文 sdu20112013 关注 - 10 粉丝 - 5 +加关注 0 0 « 上一篇:anoconda升级seaborn版本 posted @ 2018-12-06 16:39 sdu20112013 阅读(113) 评论(0) 编辑 收藏 刷新评论刷新页面返回顶部 注册用户登录后才能发表评论,请 登录 或 注册,访问网站首页。 【推荐】超50万VC++源码: 大型组态工控、电力仿真CAD与GIS源码库! 【活动】华为云12.12会员节全场1折起 满额送Mate20 【活动】华为云会员节云服务特惠1折起 【活动】腾讯云+社区开发者大会12月15日首都北京盛大起航! 腾讯云1129 相关博文: · seaborn分类数据可视化 · seaborn 数据可视化(一)连续型变量可视化 · 四、绘图可视化之Seaborn · Python数据可视化-seaborn · Python--Seaborn绘图和可视化--基本语法 最新新闻: · 腾讯揭秘“成长守护平台”诞生内幕:按照最严施行 封闭开发 · 猪心脏在狒狒体内跳动195天,距人体试验仅一步之遥 · 微软呼吁政府对面部识别技术进行监管:可能存在滥用 · 马斯克与NASA副局长会面 商谈SpaceX载人飞船试飞 · 乐视控股旗下世茂工三项目将被法院拍卖 起价23亿 » 更多新闻... 公告 昵称:sdu20112013 园龄:5年 粉丝:5 关注:10 +加关注 < 2018年12月 > 日 一 二 三 四 五 六 25 26 27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 搜索 常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 我的标签 python(4) seaborn(2) 机器学习(2) 机器学习 决策树(2) 偏差(1) 随机森林(1) 机器学习 ensemble(1) 方差(1) 随笔分类 c++(7) Libevent(5) life LINUX(3) python(16) web(2) 编译原理(1) 好记性不如烂笔头(5) 机器学习(5) 设计模式 数据结构(1) 数据库(2) 网络编程(2) 随笔档案 2018年12月 (4) 2018年11月 (1) 2015年11月 (1) 2015年10月 (1) 2015年4月 (4) 2015年3月 (1) 2014年12月 (3) 2014年11月 (5) 2014年10月 (9) 2014年9月 (1) 2014年8月 (3) 2014年7月 (10) 文章分类 c++ python 最新评论 1. Re:Libevent源码分析(一):最小堆 感谢楼主分享 --aggresss 2. Re:dota监测 楼主挺有想法的。支持一下。 --Wesley Snipes 3. Re:dota监测 楼主想法蛮有意思。 --Red Cat 4. Re:dota监测 难道楼主不是用11的?自动记录每日打多久 赢了多少盘 而且你这个关机的不厚道呀 摆明着坑队友~~~代表doter鄙视你 --秒_星 5. Re:dota监测 还好是不是撸哦撸……dota2? --Jeby Sun 阅读排行榜 1. [500lines]500行代码写web server(2425) 2. dota监测(2376) 3. Libevent源码分析(一):最小堆(1380) 4. Pythonchallenge一起来闯关(1120) 5. oracle中char,vchar,vchar2的区别与联系(1049) 评论排行榜 1. dota监测(9) 2. Libevent源码分析(一):最小堆(1) 推荐排行榜 1. dota监测(5) 2. Libevent源码分析(一):最小堆(3) 3. Pythonchallenge一起来闯关(1) 4. [500lines]500行代码写web server(1) 5. Python 3中bytes和str的https://www.cnblogs.com/sdu20112013/p/10058689.html
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信