处理tensorflow中的缺失值



我需要一些关于tensorflow/深度学习中的imputation方法的指导。我熟悉scikit-learn如何处理imputation,当我将其映射到tensorflow生态系统时,我希望使用keras中的预处理层或tensorflow变换中的函数来进行imputation。然而,至少据我所知,这些功能并不存在。所以我有几个问题:

  1. 是否存在与深度学习工作方式相关的原因导致这些函数不存在(例如,密集采样需要尽可能准确,并且您有大量数据,因此从不需要插入)
  2. 如果不是#1,应该如何处理tensorflow中的imputation ?例如,在服务期间,您的输入可能缺少数据,对此您无能为力。我认为应该把它整合到preprocessing_fn中。
  3. 有可能让图表在训练和服役期间做不同的事情吗?例如,训练无缺失值数据,如果在服务期间遇到这种情况,做一些事情,比如忽略该值或将其设置为指定的默认值。

谢谢!

请参考缺失数据的Mean imputation,使用Mean从数据中推断缺失值。

在下面的例子中,x是一个特征,表示为preprocessing_fn中的tf.SparseTensor。为了将其转换为密集张量,我们计算其平均值,并将平均值设置为实例中缺失的默认值。

回答你的第三个问题,TensorFlow Transform为你的模型构建转换到TensorFlow图中,因此在训练和推理时执行相同的转换。对于您提到的用例,下面的imputation示例可以工作,因为default_value参数在未指定的情况下为索引设置值。如果没有设置default_value参数,则默认为0。

示例代码:

def preprocessing_fn(inputs):
return {
'x_out': tft.sparse_tensor_to_dense_with_shape(
inputs['x'], default_value=tft.mean(x), shape=[None, 1])
}

相关内容

  • 没有找到相关文章

最新更新