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

时间:2018-08-15 15:30:04

标签: python tensorflow

通过文档中的这段代码,我们可以创建多个功能,以将大量数据馈送到DNN模型中:

y

但是问题是在将原始要素馈送到输入层之前对其进行转换的正确方法是什么?我可以想到的典型转换包括归一化和裁剪。

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。如何在所有这些功能上执行归一化(例如sklearn中的lambda x: (x-3.2)/1.5),而无需事先知道其最大值和最小值。

还有,是否有任何流水线实现可以在进入输入层之前进行各种特征转换?创建自定义估算器MinMaxScaler是否可以解决此问题?或其他我不知道的东西。

1 个答案:

答案 0 :(得分:0)

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

  

但是文档中的示例仅演示了标准化因子是预定义和固定的情况,例如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()))