通过文档中的这段代码,我们可以创建多个特征来将成批的数据馈送到 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()))