如何使用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%的准确率。
这是通过分别使用每个基本特征列来实现的,但这可能不足以解释数据。
为了理解不同特征组合之间的差异,可以向模型中添加交叉特征列。
另一方面,也可以在交叉列之前对“年龄”列进行分箱。