基于Google Cloud Platform训练数据分析项目的出租车费用预测模型开发

基于Google Cloud Platform训练数据分析项目的出租车费用预测模型开发

training-data-analyst Labs and demos for courses for GCP Training (http://cloud.google.com/training). training-data-analyst 项目地址: https://gitcode.com/gh_mirrors/tr/training-data-analyst

引言

在机器学习项目中,特征工程是提升模型性能的关键环节。本文将详细介绍如何在Google Cloud Platform环境下,通过添加交通流量特征(traffic_last_5min)来改进出租车费用预测模型的开发过程。我们将使用TensorFlow构建深度神经网络模型,并展示从数据准备到模型部署的完整流程。

环境准备与数据加载

首先需要设置项目环境变量,包括项目ID、存储桶名称和区域信息。这些配置对于后续使用Google Cloud服务至关重要。

PROJECT = 'cloud-training-demos'  # 替换为您的项目ID
BUCKET = 'cloud-training-demos'   # 替换为您的存储桶名称
REGION = 'us-central1'            # 替换为您的区域

数据加载部分,我们使用tf.data API高效地读取CSV格式的出租车数据。这种方法特别适合处理大规模数据集,因为它支持流式处理和并行读取。

特征工程与模型构建

特征列定义

我们定义了以下特征列用于模型训练:

CSV_COLUMNS = [
    'fare_amount',         # 标签:费用金额
    'dayofweek',           # 星期几
    'hourofday',           # 一天中的小时
    'pickup_longitude',    # 上车经度
    'pickup_latitude',     # 上车纬度
    'dropoff_longitude',   # 下车经度
    'dropoff_latitude',    # 下车纬度
    'traffic_last_5min'    # 新增特征:过去5分钟交通流量
]

其中traffic_last_5min是我们新增的特征,用于捕捉实时交通状况对出租车费用的影响。

数据预处理流水线

我们创建了专门的数据处理函数,将原始数据转换为模型可用的格式:

def create_dataset(pattern, batch_size=1, mode=tf.estimator.ModeKeys.EVAL):
    dataset = tf.data.experimental.make_csv_dataset(
        pattern, batch_size, CSV_COLUMNS, DEFAULTS)
    
    dataset = dataset.map(features_and_labels)
    
    if mode == tf.estimator.ModeKeys.TRAIN:
        dataset = dataset.shuffle(buffer_size=1000).repeat()
    
    dataset = dataset.prefetch(1)  # 使用预取提高性能
    return dataset

深度神经网络模型构建

我们使用Keras Sequential API构建了一个包含两个隐藏层的深度神经网络:

def build_model(dnn_hidden_units):
    model = Sequential(DenseFeatures(feature_columns=feature_columns.values()))
    
    for num_nodes in dnn_hidden_units:
        model.add(Dense(units=num_nodes, activation="relu"))
    
    model.add(Dense(units=1, activation="linear"))  # 输出层
    
    # 自定义RMSE评估指标
    def rmse(y_true, y_pred):
        return tf.sqrt(tf.reduce_mean(tf.square(y_pred - y_true)))
    
    model.compile(optimizer="adam", loss="mse", metrics=[rmse, "mse"])
    return model

模型结构说明:

  • 输入层:接收所有特征输入
  • 隐藏层1:32个神经元,ReLU激活
  • 隐藏层2:8个神经元,ReLU激活
  • 输出层:1个神经元,线性激活(回归问题)

模型训练与评估

我们配置了训练参数并启动训练过程:

BATCH_SIZE = 1000
NUM_TRAIN_EXAMPLES = 10000 * 6  # 训练样本数
NUM_EVALS = 60                  # 评估次数
NUM_EVAL_EXAMPLES = 10000       # 评估样本数

history = model.fit(x=trainds,
                   steps_per_epoch=steps_per_epoch,
                   epochs=NUM_EVALS,
                   validation_data=evalds,
                   callbacks=[TensorBoard(LOGDIR)])

训练过程中,我们使用TensorBoard记录训练指标,方便后续分析模型表现。

模型性能分析

通过绘制训练和验证集的RMSE曲线,我们可以直观地评估模型性能:

RMSE_COLS = ['rmse', 'val_rmse']
pd.DataFrame(history.history)[RMSE_COLS].plot()

这种可视化方法帮助我们判断模型是否过拟合或欠拟合,以及训练过程是否收敛。

模型部署

训练完成后,我们将模型导出为SavedModel格式,便于部署到生产环境:

OUTPUT_DIR = "./export/savedmodel"
tf.saved_model.save(model, EXPORT_PATH)

最后,我们使用Google Cloud AI Platform将模型部署为在线预测服务:

gcloud ai-platform versions create --model=$MODEL_NAME $VERSION_NAME --async \
       --framework=tensorflow --python-version=3.5 --runtime-version=1.14 \
       --origin=${EXPORT_PATH} --staging-bucket=gs://$BUCKET --region=$REGION

结论

通过添加traffic_last_5min这一实时交通特征,我们的出租车费用预测模型能够更好地捕捉交通状况对费用的影响。本文展示了从数据准备、特征工程、模型构建到部署的完整机器学习工作流程,这种模式可以推广到其他类似的预测问题中。

在实际应用中,还可以考虑添加更多特征如天气状况、特殊事件等,并尝试不同的网络结构,以进一步提升模型性能。Google Cloud Platform提供的工具和服务使得整个机器学习生命周期管理变得更加高效和便捷。

training-data-analyst Labs and demos for courses for GCP Training (http://cloud.google.com/training). training-data-analyst 项目地址: https://gitcode.com/gh_mirrors/tr/training-data-analyst

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周琰策Scott

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值