数据集可视化工具FACETS
谷歌发布了 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相关推荐
- 谷歌开源机器学习可视化工具 Facets:从全新角度观察数据
谷歌开源机器学习可视化工具 Facets:从全新角度观察数据 By 黄小天2017年7月18日 10:51 近日,出于支持 PAIR initiative的目的,谷歌发布了 Facets,一款开源的可 ...
- 数据探索很麻烦?推荐一款强大的特征分析可视化工具:yellowbrick
前言 玩过建模的朋友都知道,在建立模型之前有很长的一段特征工程工作要做,而在特征工程的过程中,探索性数据分析又是必不可少的一部分,因为如果我们要对各个特征进行细致的分析,那么必然会进行一些可视化以辅助 ...
- PyTorch下的可视化工具(网络结构/训练过程可视化)
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | 锦恢@知乎 来源 | https://zhuanlan.z ...
- 谷歌开源NLP模型可视化工具LIT,模型训练不再「黑箱」
视学算法报道 编辑:陈萍.魔王 转载自公众号:机器之心 深度学习模型的训练就像是「黑箱操作」,知道输入是什么.输出是什么,但中间过程就像个黑匣子,这使得研究人员可能花费大量时间找出模型运行不正常的原因 ...
- 数据呈现 | 20大数据可视化工具测评
来源:软件定义世界(SDX)本文约2800字,建议阅读9分钟本文为你介绍能制作简单的图表.复杂的图谱及信息图的数据可视化工具. 如今学习应用数据可视化的渠道有很多,你可以跟踪一些专家博客,但更重要的一 ...
- 如何选择数据分析可视化工具?Excel, Tableau还是Power BI?
来源:大数据文摘 本文约3500字,建议阅读5分钟 作为个人或公司,如何选择分析和可视化数据的工具? 正确分析使用数据可能会挖到宝藏.那么,作为个人或公司,如何选择分析和可视化数据的工具? 在本文中, ...
- 22 款神经网络的设计和可视化工具
前言 深度学习领域,最常见的就是各种网络模型,那么在写论文或者文章,介绍网络模型的时候,最好的办法当然就是展示代码画图,今天介绍的 Github 项目,就是整理了 22 个设计和可视化网络结构的工具, ...
- python在线工具-6 种 Python 数据可视化工具
原标题:6 种 Python 数据可视化工具 英文:Chris Moffitt,编译:伯乐在线/李加庆 简介 在 Python 中,将数据可视化有多种选择,正是因为这种多样性,何时选用何种方案才变得极 ...
- 大数据可视化html模板开源_5个最受工程师欢迎的大数据可视化工具
大数据可视化是进行各种大数据分析解决的最重要组成部分之一. 一旦原始数据流被以图像形式表示时,以此做决策就变得容易多了. 为了满足并超越客户的期望,大数据可视化工具应该具备这些特征: 能够处理不同种类 ...
最新文章
- git stash 拉去_git操作命令符
- 1、java集合:java集合详解及类关系图
- Biztalk 在流程中定义将消息保存为文件的文件名
- 如何从Internet Explorer或Edge迁移到Chrome(以及为什么要迁移)
- html语言table,html中的table详解
- 条件复杂的sql语句查询
- 分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!
- 【Shell系列】之shell脚本中常用句法
- Hibernate常见错误
- 浅析crontab命令
- PHP+MYSQL 出现乱码的解决方法
- Android系统源代码情景分析
- python包安装-centos7/windows
- 蓝牙耳机续航比较好的推荐,音质最好的耳机盘点
- android 隐藏应用程序,AppHider隐藏应用
- LayUI之动态选项卡Tabiframe使用
- vmware虚拟机更改MAC地址方法
- 自制Win 10 Enterprise G版和Win 10 Enterprise GN版镜像
- Filament介绍
- 一年级描写下雪的古诗,古诗翻译及重点知识点心田花开汇总
热门文章
- 工厂模式三部曲之二_工厂模式
- 轻松搞定eclipse中英文转换
- 用docker + halo搭建自己的博客
- Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)...
- 百度群组链接分享 - 铁人圈子
- 字符串复制函数strcpy的实现算法
- POJ 1012 Joseph 题解
- strongswan常用命令解析(二)
- 熊乃瑾自制蛋糕探望孤儿 岁末温情分享关爱
- 大学新生考英语和计算机,大学:为什么大一新生考英语四级相对容易?这是我见过最好的答案...