【发布时间】:2020-05-22 14:30:00
【问题描述】:
我一直在测试 Tensorflow 数据验证(版本 0.22.0)以在我当前的 ML 管道中使用,我注意到它在数值特征方面没有任何异常。例如,
> import pandas as pd
> import pyarrow
> import tensorflow as tf
> import apache_beam as beam
> import apache_beam.io.iobase
> import tensorflow_data_validation as tfdv
> print('TFDV version: {}'.format(tfdv.version.__version__))
>
> train_df = pd.DataFrame({
> 'FeatA' : ['A'] * 1000,
> 'FeatB' : ['B'] * 1000,
> 'FeatC' : [10] * 1000,
> 'FeatD' : [50.2] * 1000 })
>
> eval_df = pd.DataFrame({
> 'FeatA' : ['A1'] * 1000,
> 'FeatB' : ['B1'] * 1000,
> 'FeatC' : [4] * 1000,
> 'FeatD' : [200.43] * 1000 })
>
> train_stats = tfdv.generate_statistics_from_dataframe(train_df)
> schema = tfdv.infer_schema(statistics = train_stats)
> eval_stats = tfdv.generate_statistics_from_dataframe(eval_df)
> anomalies = tfdv.validate_statistics(statistics = eval_stats, schema = schema)
> tfdv.display_anomalies(anomalies)
仅在分类异常的 FeatA 和 FeatB 中检测到异常。但是在 FeatC 和 FeatD 中,TFDV 没有检测到任何东西。
结果显示在这个image
我也尝试过设置偏斜和漂移比较器,但没有任何变化。我想这与自动生成的模式有关,它没有为数字特征映射域。
有人知道如何让 TFDV 用于数值特征吗?
【问题讨论】:
-
这是一个很好的观察。将进一步调查并通知您。
-
有关于这个问题的消息吗?谢谢!!
-
它在 Github 问题中被跟踪,github.com/tensorflow/data-validation/issues/131。
-
相关评论:- github.com/tensorflow/data-validation/issues/… kennysong 回答:- “您需要在 Feature 中手动设置内联 FloatDomain。它不是由 infer_schema() 自动生成的。tfdv.get_feature(schema, 'FeatC ').float_domain.name = 'FeatC' tfdv.get_feature(schema, 'FeatC').float_domain.min = 0.0 tfdv.get_feature(schema, 'FeatC').float_domain.max = 100.0 之后,validate_statistics() 应该识别越界特征。”
标签: python-3.x tensorflow-data-validation