本文档以机器学习Titanic、iris等数据为原型,分析不同数据项,不同维度的情况下,可以展示哪些可视化图表。
1. 单数据项统计
在h2o中统一概述为特征图、总览图、分布图、范围图
1.1 特征图(CHARACTERISTICS)
通过对多种数据类型的测试,总结为特征图,其实是为了统计不同特征项的占比情况

特征项分为以下几类:
缺失值(Missing):就是针对当前统计列,缺失的数据量占比
负无穷(-Inf):数据项中,值为负无穷的总量
零值(Zero):一般情况下,一列可能会有很多取值,在
h2o中,只把零值的占比单独拿出来的。正无穷(+Inf):数据项中,值为正无穷的总量
其它(Other):除去
缺失值跟零值,其它数据项统一为其它
特征图针对数字型、枚举型、字符串型都要展示出来。其中针对枚举型,在统计的时候,需要将枚举做一下转换,数据集中第一个枚举值为0值,剩下的都为其它。
1.2 总览图(SUMMARY)
总览图其实就是分位图,以箱线图(box)的形式展示,统计指标为min,q1,q2,q3,max。

总览图只针对数字型的进行展示,其它数据类型不展示。四分位的统计一般有两种算法N+1和N-1两种,我不知道我们会选哪一种。
q1:四分之一位
q2:四分之二位
q3:四分之三位
1.3 分布图(DISTRIBUTION)
其实就是直方图,统计不同区间(间隔)内,数据的分布情况:

因为它统计的是不同区间内的数据分布,所以x轴的区间分布是连续的,这是与普通柱状图最大的不同,分布图也只针对数字型的列进行展示
1.4 范围图(DOMAIN (MAX 1000 LEVELS))
范围图跟上面的分布图类似,不过在h2o中,将y轴展示为数据取值,x轴展示为统计数量:

范围图只统计枚举型的数据项,从图中可以看出,label列不是连续的。
我们系统中,要做到,所有的图表,在某个位置,比如右上角,有一个
查看数据的图标,点击之后,可以查看图表数据明细。
2. 特征值总览统计图
针对特征项的整理统计,我们提供两个统计图,分别是热力图和散点图矩阵
热力图
热力图本身比我们要展示的下图要复杂的多,我们这里只展示特征项之间的相关性。
因为热力图统计的项需要是数字型的,所以我们在展示热力图的特征项选择时,也只能展示特征项为
数字型的特征。

热力图展示的是所有特征项之间的相关性,因为自己跟自己肯定是最相关的,所以斜对角线一定是最大值。
展示热力图之前,用户需要配置的参数有:
特征项:多选下拉框,默认全选,但如果特征项大于
30个,需要用户手动选择色版取值范围:默认为空
是否展示相关性数值:默认为展示
散点图矩阵
同样是展示特征项之间关系的一种图形,可以直观的看到哪些特征与标签项最为关联:

用户需要配置的参数有:
特征项:多选下拉框,默认全选,但如果特征项大于
10个,需要用户手动选择标签项:单选下拉框,不必选,如果没有选择的话,出来的展示只有一种颜色
对角线子图:单选下拉框,默认选中
hist,即上图中展示的图形,还可以选择kde密度曲线non-identity关系图:单选下拉框,默认不选择,可选项有:
scatter和reg
如果对角线子图选择密度曲线的话,展示图形如下图:

如果non-identity关系图选择为reg的话,展示如下:

3. 自定义统计图
在分析自定义统计图可以怎么设计之前,先分析seaborn中各种类型图形,分别支持什么样的参数,以决定我们在界面中,可以展示哪些。
| 图形类型 | 类型 | x取值 | y取值 | 分类列(标签列) | 多图分类列 | kind | 堆叠 | 其它 |
|---|---|---|---|---|---|---|---|---|
| factorplot | 表格图 | ✔ | ✔ | ✔ | ✔ | {point, bar, count, box, violin, strip} | ✘ | {size,aspect,orient,palette等} |
| lmplot | 表格图 | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | {size,aspect,palette,markers等} |
| jointplot | 表格图 | ✔ | ✔ | ✘ | ✘ | {scatter,reg,resid,kde,hex } | ✘ | { size,aspect,space,color等} |
| stripplot | 分类图 | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | {jitter,linewidth,palette,dodge ,size,marker,edgecolor,alpha等} |
| swarmplot | 分类图 | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | {color,palette,dodge,orient, size,edgecolor,linewidth等} |
| boxplot | 分类图 | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | {order,palette,dodge,orient, size,linewidth等} |
| violinplot | 分类图 | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | {order,palette,dodge,orient,inner, width,linewidth,split,scale等} |
| lvplot | 分类图 | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | {order,palette,dodge,orient, width,linewidth等} |
| pointplot | 分类图 | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | {order,palette,dodge,orient,join,estimator, markers,linestyles,width,linewidth等} |
| barplot | 分类图 | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | {order,palette,dodge,orient,estimator, color,width,linewidth等} |
| countplot | 分类图 | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | {order,palette,dodge,orient, color,facecolor,edgecolor等} |
| distplot | 分布图 | ✔ | ✘ | ✘ | ✘ | ✘ | ✘ | {hist,kde,rug,fit,color,vertical等} |
| kdeplot | 分布图 | ✔ | ✔ | ✘ | ✘ | ✘ | ✘ | {shade,cbar,color,vertical等} |
| regplot | 回归图 | ✔ | ✔ | ✘ | ✘ | ✘ | ✘ | {color,marker,x_jitter,x_estimator ,order,ci等} |
| heatmap | 矩阵图 | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | {annot,vmin,vmax,cmap,center, fmt,cbar,square等} |
分析上面的表格,基本我们可以看到不同类型的表格需要不同的参数,但是可以划为几个大类。所以针对自定义数据统计,我打算分下面几个步骤:
首先需要选择
图表类型,不同的图表类型,下面的参数设置要有区分。x列:基本都需要选择,除了
heatmapy列:针对
表格图都需要选择,针对分类图,不是必选项标签列:对应
seaborn中的hue,也就是按哪一列分类统计,不是必选项多图分类列:只有
factorplot和lmplot是可选的,单选下拉框kind图类型:针对
factorplot可以下拉选择{point, bar, count, box, violin, strip};针对jointplot可以下拉选择scatter,reg,resid,kde,hex堆叠:即一次画多个图,针对
分类统计图有效,单选下拉框,可选项为{point, bar, count, box, violin, strip}其它自定义参数:我感觉可以一个
textarea输入框搞定,随便用户输入
1. 需要支持多图重叠,需要列出哪些图可以重叠!重叠图形应该不能超过两个,否则应该很乱。
2. 在
countplot中,x和y只需要设计一个。
3. 在
point, bar, count, box, violin, strip这些分类统计图中,x和y可以只设置一个,相对的y和x其实取值就是count。