为 NannyML 做数据准备

Python 中的机器学习监控

Hakim Elakhrass

Co-founder and CEO of NannyML

加载数据

dataset_name = "green_taxi_dataset.csv"
data = pd.read_csv(dataset_name)
data.head()

该图为数据集前五行的截图。

Python 中的机器学习监控

处理数据

# 创建数据分区
data['partition'] = pd.cut(
    data['lpep_pickup_datetime'],
    bins= [pd.to_datetime('2016-12-01'),
           pd.to_datetime('2016-12-08'),
           pd.to_datetime('2016-12-16'),
           pd.to_datetime('2017-01-01')],
    right=False,
    labels= ['train', 'test', 'prod']
)
Python 中的机器学习监控

拆分数据

# 目标列名
target = 'tip_amount'
# 特征列名
features = ["PULocationID", "DOLocationID", "trip_distance", "VendorID", "pickup_time"]
# 训练集
X_train = data.loc[data['partition'] == 'train', features]
y_train = data.loc[data['partition'] == 'train', target]

# 测试集(后续作参考集)
X_test = data.loc[data['partition'] == 'test', features]
y_test = data.loc[data['partition'] == 'test', target]

# 生产集(后续作分析集)
X_prod = data.loc[data['partition'] == 'prod', features]
y_prod = data.loc[data['partition'] == 'prod', target]
Python 中的机器学习监控

构建模型

  • 使用 lightgbm 训练 LGBMRegressor
  • 在测试集上评估模型
  • 部署模型
# 训练模型
model = LGBMRegressor(random_state=42)
model.fit(X_train, y_train)

# 进行预测
y_pred_train = model.predict(X_train)
y_pred_test = model.predict(X_test)

# 在训练集与测试集上评估
mae_train = MAE(y_train, y_pred_train)
mae_test = MAE(y_test, y_pred_test)

# 将模型部署到生产
y_pred_prod = model.predict(X_prod)
Python 中的机器学习监控

创建参考集与分析集

参考期

  • 使用测试集

  • 需要真实标签

  • 设定基准性能

分析期

  • 最新生产数据

  • 真实标签可选

  • NannyML 分析数据漂移与性能

# 创建参考集
reference = X_test.copy() # 测试集特征
reference['y_pred'] = y_pred_test # 预测
reference['tip_amount'] = y_test # 标签
reference = reference.join(
    data['lpep_pickup_datetime']) # 时间戳
# 创建分析集
analysis = X_prod.copy() # 生产特征
analysis['y_pred'] = y_pred_prod # 预测
analysis = analysis.join(
    data['lpep_pickup_datetime']) # 时间戳
Python 中的机器学习监控

参考集示例

  • 时间戳:观测发生的时间(可选)
  • 特征:输入模型的特征
  • 模型输出
    • 预测:模型输出的分数
    • 预测类别标签:阈值化后的概率分数
  • 目标:包含真实标签

图像显示参考集的前五行。

Python 中的机器学习监控

Vamos praticar!

Python 中的机器学习监控

Preparing Video For Download...