如何在TF图中端到端训练TensorFlow模型之前预处理特征



通过文档中的这段代码,我们可以创建多个特征来将成批的数据馈送到 DNN 模型中:

my_feature_columns = []
for key in train_x.keys():
my_feature_columns.append(tf.feature_column.numeric_column(key=key))

但问题是,在将原始要素馈送到输入层之前,转换原始要素的正确方法是什么?我能想到的典型转换包括规范化和裁剪。

tf.feature_column.numeric_column确实有一个指定规范化函数的参数。但文档中的示例仅演示了规范化因子是预定义和固定的场景,例如lambda x: (x-3.2)/1.5。如何执行规范化(例如MinMaxScaler在 sklearn 中(跨越所有这些功能,而事先不知道其最大值和最小值。

此外,是否有任何管道实现可以在它们进入输入层之前进行各种特征转换?创建自定义估算器tf.estimator.Estimator这个问题的答案吗?或其他任何我不知道的事情。

我实际上可以回答你问题的一部分:

但文档中的示例仅演示了规范化因子是预定义和固定的场景,例如 lambda x:(x-3.2(/1.5。

您可以简单地使用 Pandas 数据帧的.min.max类成员来获取所需数组的最小值和最大值。假设您要规范化糖尿病数据集中的某些列,则可以执行以下操作:

diabetes = pd.read_csv('pima-indians-diabetes.csv', names=new_cols)
# Normalize the columns
cols_to_norm = ['Number_pregnant',
'Glucose_concentration',
'Blood_pressure',
'Triceps',
'Insulin',
'BMI',
'Pedigree']
diabetes[cols_to_norm] = diabetes[cols_to_norm].apply(lambda x: (x - x.min()) / (x.max() - x.min()))

最新更新