支持facets概述可视化的python代码

facets-overview的Python项目详细描述


下面解释中显示的示例代码也可以在本示例jupyter笔记本中找到。

功能统计协议缓冲区

概览可视化由功能统计协议缓冲区提供支持。 功能统计协议缓冲区消息存储ml系统的一组输入数据的单个功能列的摘要统计信息(尽管它足够通用,可以用于任何一组数据的摘要统计信息)。

顶层proto是datasetfeaturestatistics list,它是datasetfeaturestatistics的列表。 每个dataset feature statistics表示单个数据集的功能统计信息。 每个dataset feature statistics都包含一个featurenamestatistics列表,其中包含单个数据集中单个功能的统计信息。

功能统计信息因功能数据类型(数字、字符串或原始字节)而异。 对于数字特征,统计数据包括最小值、平均值、中值、最大值和标准差等度量。 对于字符串功能,统计信息包括平均长度、唯一值的数目和模式等指标。

特征统计信息包括用于加权统计信息的可选字段。 如果数据集具有示例权重特征,则除了标准统计信息外,还可以使用该数据集计算每个特征的权重统计信息。 如果一个协议包含加权字段,那么可视化将显示加权统计数据,用户将能够在每个功能的图表的未加权版本和加权版本之间切换。

功能统计信息包括用于自定义统计信息的可选字段。 如果团队希望跟踪和可视化数据集中的特性有其他统计信息,则可以将它们添加到"自定义统计信息"字段中,该字段是自定义统计信息名称到自定义统计信息值(数字或字符串)的映射。 这些自定义统计信息将与标准统计信息一起显示。

特征统计生成

特性统计协议缓冲区可以通过facets-overview/facets-overview目录中提供的python代码为数据集创建。 此代码可以通过pip install facets overview安装。TensorFlow也应安装,但不作为 pip依赖,以便允许用户根据需要依赖tensorflow或tensorflow gpu包。 可以从tensorflow示例协议缓冲区的tfrecord文件或pandas数据帧分析数据集。

要从pandas数据帧创建proto,请使用genericfeaturestisticsgenerator类的protofromdataframes方法。 要从tfrecord文件创建proto,请使用feature statistics generator类的protofromtfrecordfiles方法。 这些生成器依赖于numpy和pandas python库。 使用FeatureStatisticsGenerator类还需要安装TensorFlow。 有关更多文档,请参阅这些文件。

示例代码:

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

大型数据集

此存储库中用于生成特性统计信息的python代码仅适用于小到足以放入本地计算机内存的数据集。要为大型数据集分布式生成功能统计信息,请查看独立开发的facets overview spark项目。

可视化

使用已安装的nbextension,可以很容易地在jupyter笔记本中可视化一个proto。 proto被加密,然后通过元素上的proto input属性提供给facets overview polymer web组件作为输入。 Web组件随后显示在笔记本的输出单元格中。

示例代码(接ABOve示例):

fromIPython.core.displayimportdisplay,HTMLimportbase64protostr=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协议缓冲区:

  • datasetfeaturestatisticslist javascript类的一个实例,它是由协议缓冲区编译器缓冲区创建的类。
  • 包含协议缓冲区的序列化二进制的uint8数组。
  • 包含base-64编码的串行协议缓冲区的字符串,如上面的代码示例所示。

理解可视化

可视化包含两个表:一个用于数值特征,另一个用于分类(字符串)特征。 每个表包含该类型的每个要素的行。 这些行包含计算出的统计数据和图表,显示该功能在数据集中的值分布。

对于数据集中的大量示例,可能有问题的统计数据(例如缺少功能(没有值))以红色和粗体显示。

全球控制

可视化的顶部是影响各个表的控件。

"排序方式"下拉列表更改每个表中要素的排序顺序。选项是:

  • 特征顺序:按特征统计原型中的自然顺序排序
  • 非均匀性:按值分布的非均匀性排序(使用熵)
  • 按字母顺序
  • 缺失量/零:按功能的缺失量或包含数字0的数量排序,最大值在前。
  • 分布距离(仅在比较多个数据集时可用):按每个特征分布形状之间的最大差异排序(对形状使用卡方检验)。

名称筛选器输入框允许按与提供的文本匹配的要素名称筛选表。 当前设置的筛选器将公开为属性searchstring

功能复选框允许按每个功能的值类型进行筛选,例如float、int或string。

图表

表中为要素显示的图表由图表上方的下拉列表控制。 数字功能的选项是:

  • 所有值的直方图,具有10个等宽桶
  • 所有值的小数的可视化
  • 每个示例值的小数位数的可视化
  • 对于pandas数据帧的数据集,每个示例都有一个值,因此可视化很简单,显示所有值为1的十进制数。 但是对于tf.examples,对于给定的示例,一个特性可以有任意数量的值。 一个例子是一个地址特性,它列出一个人的所有已知地址(每个例子代表一个人)。

字符串功能的选项是:

  • 数据集中每个值的计数的柱状图(如果特征具有20个或更少的唯一值,则使用此图表)。 存在一个开关来代替显示计数表。
  • 每个特征值表示的整个数据集中所有值的百分比的累积分布函数图(如果特征具有20个以上的唯一值,则使用此图)。 存在一个开关来代替显示计数表。
  • 每个示例值的小数位数的可视化。

此外,特性统计协议允许为任何特性存储自定义图表。 如果可视化的输入协议包含任何自定义图表,它们也将列在下拉列表中。

下拉列表旁边的复选框控制图表的其他一些功能:

  • "日志"复选框将Y轴从"线性"更改为"日志"。
  • "展开"复选框显示图表的更大版本。
  • "加权"复选框(仅当数据集除包含常规统计信息外还包含加权统计信息时才显示)显示图表的加权版本以及加权版本统计数字。
  • "百分比"复选框(仅当可视化比较多个数据集时显示)将Y轴更改为每个完整数据集的百分比,而不是原始计数。 这样可以方便地比较具有显著不同示例总数的数据集(例如测试和训练数据集)之间的分布。

运行演示(功能测试)

有多个概述演示可以用作功能测试,以确保新的构建正常工作。 这些演示都可以在Facets_Overview/Functional_Tests下找到。 要运行一个测试,例如"简单"测试,请运行bazel run facets_overview/functional_tests/simple:devserver,然后将浏览器导航到"localhost:6006/facets overview/functional tests/simple/index.html"以查看结果的可视化效果。

运行可视化单元测试

运行bazel run facets_overview/common/test:devserver,然后将浏览器导航到"localhost:6006/facets overview/facets overview/common/test/runner.html"。 测试的输出可以在开发人员控制台中看到。

构建facets概述pip包

  1. 更新setup.py中的版本号并将其提交给github。
  2. 从这个目录运行python setup.py bdist_wheel--universal
  3. 从这个目录运行tween upload dist/*将其上载到pypi。

运行python单元测试

安装python包后,运行python-m feature\u statistics\u generator测试python-m generic\u statistics\u generator测试

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java接口中的每个方法都是抽象的,但在抽象类中,我们也只能使用抽象方法   初始化Java中声明的、未初始化的变量会发生什么情况?   java BouncyCastle openPGP将字节[]数组加密为csv文件   在Java中将类A(和所有子类)映射到类B的实例的字典   RSA公钥编码,在Java和Android中,代码相同,结果不同   java在安卓中实现数字检测语音识别   java取消选择复选框   java如何在其他配置中重用Maven配置XML片段   java有没有一种有效的方法来检查HashMap是否包含映射到相同值的键?   spring处理程序调度失败;嵌套的例外是java。lang.NoClassDefFoundError:org/apache/http/client/HttpClient   带有ehcache的java多层缓存   java如何访问chromium(或任何其他浏览器)cookie   java通过将两个集合与spring data mongodb data中的条件合并来获取计数   安卓中R.java的语法错误