如何将 Tensorflow 与 Estimators 结合使用,向 titanic 数据集添加一列?
可以使用 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’ 列也可以在交叉列之前进行存储桶化。

