如何使用TensorFlow和Estimators为泰坦尼克号数据集添加一列?


可以使用TensorFlow的`feature_column`类中的`crossed_column`方法向泰坦尼克号数据集添加列。可以使用`train`方法重新训练模型。

阅读更多: 什么是TensorFlow以及Keras如何与TensorFlow一起创建神经网络?

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

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

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

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

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

示例

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://tensorflowcn.cn/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%的准确率。

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

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

  • 另一方面,也可以在交叉列之前对“年龄”列进行分箱。

更新于:2021年2月25日

162次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告