谷歌发布了 Facets,一款开源的可视化工具。它可以帮助你理解、分析和调试 ML 数据集。Facets 包含两个部分——Facets Overview 和 Facets Dive——允许用户从不同的粒度观看数据的全景图,还可以轻易地被用在 Jupyter notebooks 之内,或者嵌入网页之中。除了开放 Facets 源代码,谷歌还创建了演示网站,Github 和网站地址见:
github 地址:https://github.com/pair-code/facets
演示地址:https://pair-code.github.io/facets/

overview

Overview提供一个或多个数据集的高级视图。它生成特征的可视化统计分析,还可以用于比较两个或多个数据集之间的统计信息,可以处理离散值和连续值。

Feature Statistics Protocol Buffer

  • 存储ML系统输入数据的单个特性列的汇总统计信息
  • 顶层原型是DatasetFeatureStatisticsList(DFSL),是一系列的DatasetFeatureStatistics(DFS),每个FDS表示单个数据集的特征统计信息,它包含一系列的FeatureNameStatistics(包含单个数据集中单个特性的统计信息)
  • feature statistics取决于datasets的数据类型(numeric, string, or raw bytes),numeric类型
    • numeric类型包含:最大值、均值、中值、最小值、方差、缺失比例、0值比例等
    • string类型包含:string平均长度, 唯一值个数,缺失值比例,top等
  • 可选项weighted统计:如果数据集中有weight特征,则可进行带权值统计,显示时可在权值统计和普通统计之间进行视图切换
  • 可选项custome统计:自定义统计特性

Feature Statistics Generation

numpy、pandas、tensorflow包需要安装

from generic_feature_statistics_generator import GenericFeatureStatisticsGenerator
import pandas as pd
df =  pd.DataFrame({'num' : [1, 2, 3, 4], 'str' : ['a', 'a', 'b', None]})
proto = GenericFeatureStatisticsGenerator().ProtoFromDataFrames([{'name': 'test', 'table': df}])

将pandas转化为Proto形式,pandas读入,再用ProtoFromDataFrames转换

注:上面这种方式适用与小数据,大量数据需要采用spark处理

Visualization

from IPython.core.display import display, HTML
import base64
protostr = base64.b64encode(proto.SerializeToString()).decode("utf-8")
HTML_TEMPLATE = """<link rel="import" href="/nbextensions/facets-dist/facets-jupyter.html" ><facets-overview id="elem"></facets-overview><script>document.querySelector("#elem").protoInput = "{protostr}";</script>"""
html = HTML_TEMPLATE.format(protostr=protostr)
display(HTML(html))

protoInput有三种形式:

  • DatasetFeatureStatisticsList javascript实例
  • UInt8Array(protocol buffer的序列化二进制文件)
  • base-64编码的序列化protocol buffer(如上例所示)
Understanding the Visualization
  • numeric特征展示
  • string特征展示

dive

Dive是一种工具,可以交互式地探索多达数万个多维数据点,允许用户在高级概览和低级细节之间无缝切换。每个示例在可视化中都表示为一个单独的项,并且这些点可以通过它们的特征值在多个维度中进行面/桶形定位。通过将平滑动画和缩放与面板和过滤相结合,Dive可以很容易地发现复杂数据集中的模式和异常值

Getting Started

Providing Data to Dive

数据格式如下:

[{"name": "apple","category": "fruit","calories": 95
},{"name": "broccoli","category": "vegetable","calories": 50
},{...Many more foods...
}]
  • 不需要所有的数据都具有相同key,允许存在缺失值
  • 只能处理numeric和string类型数据,array之类的复杂数据类型会优先转化为string
Providing Sprites For Dive to Render

可以替换展示形式

Navigating the Dive Controls
  • Faceting Controls
    XY轴选择,连续型数据等分成不同的段,离散型进行数值统计,值太多归为other
  • Positioning Controls
    默认情况下直接将数据堆叠在一起或者放在散点图中
  • Color Controls
  • Display Controls 每个点呈现什么
示例程序

只需要把数据替换一下,其他的形式可以不用更改

import sys
sys.path.append('./python')# 读入数据
import pandas as pd
features = ["Age", "Workclass", "fnlwgt", "Education", "Education-Num", "Marital Status","Occupation", "Relationship", "Race", "Sex", "Capital Gain", "Capital Loss","Hours per week", "Country", "Target"]
train_data = pd.read_csv(
#     "https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data",'E:/PyProject/facets/facets_overview/adult.data',names=features,sep=r'\s*,\s*',engine='python',na_values="?")
test_data = pd.read_csv(
#     "https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.test",'E:/PyProject/facets/facets_overview/adult.test',names=features,sep=r'\s*,\s*',skiprows=[0],engine='python',na_values="?")#展示
from IPython.core.display import display, HTMLjsonstr = train_data.to_json(orient='records')
HTML_TEMPLATE = """<script src="https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/0.7.24/webcomponents-lite.js"></script><link rel="import" href="https://raw.githubusercontent.com/PAIR-code/facets/master/facets-dist/facets-jupyter.html"><facets-dive id="elem" height="600"></facets-dive><script>var data = {jsonstr};   #数据document.querySelector("#elem").data = data;</script>"""
html = HTML_TEMPLATE.format(jsonstr=jsonstr)
display(HTML(html))

参考:
https://www.jiqizhixin.com/articles/2017-07-18

数据集可视化工具FACETS相关推荐

  1. 谷歌开源机器学习可视化工具 Facets:从全新角度观察数据

    谷歌开源机器学习可视化工具 Facets:从全新角度观察数据 By 黄小天2017年7月18日 10:51 近日,出于支持 PAIR initiative的目的,谷歌发布了 Facets,一款开源的可 ...

  2. 数据探索很麻烦?推荐一款强大的特征分析可视化工具:yellowbrick

    前言 玩过建模的朋友都知道,在建立模型之前有很长的一段特征工程工作要做,而在特征工程的过程中,探索性数据分析又是必不可少的一部分,因为如果我们要对各个特征进行细致的分析,那么必然会进行一些可视化以辅助 ...

  3. PyTorch下的可视化工具(网络结构/训练过程可视化)

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | 锦恢@知乎 来源 | https://zhuanlan.z ...

  4. 谷歌开源NLP模型可视化工具LIT,模型训练不再「黑箱」

    视学算法报道 编辑:陈萍.魔王 转载自公众号:机器之心 深度学习模型的训练就像是「黑箱操作」,知道输入是什么.输出是什么,但中间过程就像个黑匣子,这使得研究人员可能花费大量时间找出模型运行不正常的原因 ...

  5. 数据呈现 | 20大数据可视化工具测评

    来源:软件定义世界(SDX)本文约2800字,建议阅读9分钟本文为你介绍能制作简单的图表.复杂的图谱及信息图的数据可视化工具. 如今学习应用数据可视化的渠道有很多,你可以跟踪一些专家博客,但更重要的一 ...

  6. 如何选择数据分析可视化工具?Excel, Tableau还是Power BI?

    来源:大数据文摘 本文约3500字,建议阅读5分钟 作为个人或公司,如何选择分析和可视化数据的工具? 正确分析使用数据可能会挖到宝藏.那么,作为个人或公司,如何选择分析和可视化数据的工具? 在本文中, ...

  7. 22 款神经网络的设计和可视化工具

    前言 深度学习领域,最常见的就是各种网络模型,那么在写论文或者文章,介绍网络模型的时候,最好的办法当然就是展示代码画图,今天介绍的 Github 项目,就是整理了 22 个设计和可视化网络结构的工具, ...

  8. python在线工具-6 种 Python 数据可视化工具

    原标题:6 种 Python 数据可视化工具 英文:Chris Moffitt,编译:伯乐在线/李加庆 简介 在 Python 中,将数据可视化有多种选择,正是因为这种多样性,何时选用何种方案才变得极 ...

  9. 大数据可视化html模板开源_5个最受工程师欢迎的大数据可视化工具

    大数据可视化是进行各种大数据分析解决的最重要组成部分之一. 一旦原始数据流被以图像形式表示时,以此做决策就变得容易多了. 为了满足并超越客户的期望,大数据可视化工具应该具备这些特征: 能够处理不同种类 ...

最新文章

  1. git stash 拉去_git操作命令符
  2. 1、java集合:java集合详解及类关系图
  3. Biztalk 在流程中定义将消息保存为文件的文件名
  4. 如何从Internet Explorer或Edge迁移到Chrome(以及为什么要迁移)
  5. html语言table,html中的table详解
  6. 条件复杂的sql语句查询
  7. 分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!
  8. 【Shell系列】之shell脚本中常用句法
  9. Hibernate常见错误
  10. 浅析crontab命令
  11. PHP+MYSQL 出现乱码的解决方法
  12. Android系统源代码情景分析
  13. python包安装-centos7/windows
  14. 蓝牙耳机续航比较好的推荐,音质最好的耳机盘点
  15. android 隐藏应用程序,AppHider隐藏应用
  16. LayUI之动态选项卡Tabiframe使用
  17. vmware虚拟机更改MAC地址方法
  18. 自制Win 10 Enterprise G版和Win 10 Enterprise GN版镜像
  19. Filament介绍
  20. 一年级描写下雪的古诗,古诗翻译及重点知识点心田花开汇总

热门文章

  1. 工厂模式三部曲之二_工厂模式
  2. 轻松搞定eclipse中英文转换
  3. 用docker + halo搭建自己的博客
  4. Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)...
  5. 百度群组链接分享 - 铁人圈子
  6. 字符串复制函数strcpy的实现算法
  7. POJ 1012 Joseph 题解
  8. strongswan常用命令解析(二)
  9. 熊乃瑾自制蛋糕探望孤儿 岁末温情分享关爱
  10. 大学新生考英语和计算机,大学:为什么大一新生考英语四级相对容易?这是我见过最好的答案...