我不确定下面的代码有什么问题。我阅读了这些文件,所有这些文件都指向了一种与此类似的方法。
下面是一个不起作用的简单例子。我的期望是注意特性x1
,因为两个数据集之间的分布非常不同。
import numpy as np
import pandas as pd
import tensorflow_data_validation as tfdv
NUM_VALS_TRAIN = 10000
# -------- Today --------
df = pd.DataFrame({
'x1': np.random.normal(4, 3, NUM_VALS_TRAIN),
'x2': np.random.normal(-3, 4, NUM_VALS_TRAIN)})
stats_train_today = tfdv.generate_statistics_from_dataframe(df)
# -------- Yesterday --------
df = pd.DataFrame({
'x1': np.random.normal(400, 300, NUM_VALS_TRAIN),
'x2': np.random.normal(-3, 4, NUM_VALS_TRAIN)})
stats_train_yesterday = tfdv.generate_statistics_from_dataframe(df)
# -------- Validate --------
schema = tfdv.infer_schema(stats_train_yesterday)
tfdv.get_feature(schema, 'x1').drift_comparator.infinity_norm.threshold = 0.01
anomalies = tfdv.validate_statistics(statistics=stats_train_today,
schema=schema,
previous_statistics=stats_train_yesterday)
tfdv.display_anomalies(anomalies)
结果总是No anomalies found.
这个代码出了什么问题?
(使用tfx==0.24.1(
好的,我在https://github.com/tensorflow/data-validation/blob/master/RELEASE.md
"添加对检测数字特征中的漂移和分布偏斜的支持";
事实证明它还没有实现。
Jenson Shannon用于数值特征,无穷范数用于范畴。似乎你已经使用了无穷范数的数值特征,这显然是行不通的。检查漂移检测,上面写着:
"在数据的连续跨度之间支持漂移检测(即。,在跨度N和跨度N+1之间(,例如在训练数据。我们将漂移表示为的范畴特征和近似Jensen—Shannon散度数字特征。您可以设置阈值距离,以便当漂移高于可接受范围时,接收警告。背景正确的距离通常是一个迭代过程,需要领域知识和实验">