我正在开始一个 Tensorflow 项目,并且正在定义和创建我的功能列。然而,我有成百上千个特征——这是一个相当广泛的数据集。即使经过预处理和清理,我仍然有很多列。
传统的创建方式feature_column
定义在张量流教程 https://www.tensorflow.org/versions/master/tutorials/wide甚至这个StackOverflow 帖子 https://stackoverflow.com/questions/42965371/how-to-create-feature-columns-for-tensorflow-classifier。您本质上是为每个特征列声明并初始化一个 Tensorflow 对象:
gender = tf.feature_column.categorical_column_with_vocabulary_list(
"gender", ["Female", "Male"])
如果您的数据集只有几列,那么这一切都很好,但就我而言,我当然不希望有数百行代码初始化不同的列feature_column
对象。
解决这个问题的最佳方法是什么?我注意到在本教程中,所有列都收集为列表:
base_columns = [
gender, native_country, education, occupation, workclass, relationship,
age_buckets,
]
最终传递给您的估算器:
m = tf.estimator.LinearClassifier(
model_dir=model_dir, feature_columns=base_columns)
理想的处理方式也是如此feature_column
创建数百列是将它们直接附加到列表中吗?像这样的东西吗?
my_columns = []
for col in df.columns:
if is_string_dtype(df[col]): #is_string_dtype is pandas function
my_column.append(tf.feature_column.categorical_column_with_hash_bucket(col,
hash_bucket_size= len(df[col].unique())))
elif is_numeric_dtype(df[col]): #is_numeric_dtype is pandas function
my_column.append(tf.feature_column.numeric_column(col))
这是创建这些特征列的最佳方式吗?或者我是否缺少 Tensorflow 的某些功能来解决此步骤?