如何将 Tensorflow 与 Estimators 结合使用,向 titanic 数据集添加一列?

tensorflowserver side programmingprogramming更新于 2025/5/20 5:37:17

可以使用 Tensorflow 向 titanic 数据集添加一列,方法是使用 ‘crossed_column’ 方法,该方法存在于 ‘Tensorflow’ 模块的 ‘feature_column’ 类中。可以使用 ‘train’ 再次训练模型方法。

阅读更多: 什么是 TensorFlow,以及 Keras 如何与 TensorFlow 配合使用来创建神经网络?

我们将使用 Keras Sequential API,它有助于构建用于处理普通层堆栈的顺序模型,其中每个层都有一个输入张量和一个输出张量。

包含至少一个层的神经网络称为卷积层。我们可以使用卷积神经网络构建学习模型。 

我们使用 Google Colaboratory 运行以下代码。Google Colab 或 Colaboratory 有助于在浏览器上运行 Python 代码,无需配置,可以免费访问 GPU(图形处理单元)。Colaboratory 建立在 Jupyter Notebook 之上。

Estimator 是 TensorFlow 对完整模型的高级表示。它旨在轻松扩展和异步训练。 我们将使用 tf.estimator API 训练逻辑回归模型。该模型用作其他算法的基线。估算器使用特征列来描述模型如何解释原始输入特征。估算器需要一个数字输入向量,特征列将有助于描述模型应如何转换数据集中的每个特征。

选择和使用正确的特征列集对于学习有效的模型至关重要。特征列可以是原始特征字典中的原始输入之一,也可以是使用在一个或多个基础列上定义的转换创建的新列。

示例

print("Crossed feature column is added to the data")
age_x_gender = tf.feature_column.crossed_column(['age', 'sex'], hash_bucket_size=100)
print("The combination feature is added")
print("The model is trained again")
derived_feature_columns = [age_x_gender]
linear_est = tf.estimator.LinearClassifier(feature_columns=feature_columns+derived_feature_columns)
linear_est.train(train_input_fn)
result = linear_est.evaluate(eval_input_fn)
clear_output()
print(result)

代码来源 −https://www.tensorflow.org/tutorials/estimator/linear

输出

Crossed feature column is added to the data
The combination feature is added
The model is trained again
{'accuracy': 0.7613636, 'accuracy_baseline': 0.625, 'auc': 0.84352624, 'auc_precision_recall': 0.78346276, 'average_loss': 0.48114488, 'label/mean': 0.375, 'loss': 0.4756022, 'precision': 0.65789473, 'prediction/mean': 0.4285249, 'recall': 0.75757575, 'global_step': 200}

解释

  • 准确率达到 75%。

  • 这是通过单独使用每个基本特征列来实现的,但这可能不足以解释数据。

  • 为了了解不同特征组合之间的差异,可以将交叉特征列添加到模型中。

  • 另一方面,‘age’ 列也可以在交叉列之前进行存储桶化。


相关文章