我正在尝试实现一个特征选择组件,并考虑以下计划:
InputArtifact[Example]
作为输入OutputArtifact[Example]
(具有相同的结构但列更少)
tf.data.TFRecordDataset(train_uri, compression_type='GZIP')
)
split_dataset = tf.data.TFRecordDataset("path_to_original_dataset.gzip", compression_type='GZIP')
with tf.io.TFRecordWriter(path = "path_to_new_TFRecord.gzip", options="GZIP") as writer:
for split_record in split_dataset.as_numpy_iterator():
example = tf.train.Example()
example.ParseFromString(split_record)
updated_example = update_example(selected_features, example)
writer.write(updated_example.SerializeToString())
这里,updated_example
是我使用的自定义函数,它获取解析后的示例,对其进行处理并返回处理后的示例!
# update example with selected features
def update_example(selected_features, orig_example):
result = {}
for key, feature in orig_example.features.feature.items():
if key in selected_features:
result[key] = orig_example.features.feature[key]
new_example = tf.train.Example(features=tf.train.Features(feature=result))
return new_example
我没有删除该列(因为我无法找到这样做的方法),而是只是逐个功能创建了一个新示例并将其返回!