使用whylogs自定义函数(UDF)进行数据特征分析

使用whylogs自定义函数(UDF)进行数据特征分析

whylogs whylabs/whylogs: whylogs是一个轻量级的数据质量监控和数据分析库,能够实时收集和记录特征统计数据,便于后期进行数据质量和异常检测等工作。 whylogs 项目地址: https://gitcode.com/gh_mirrors/wh/whylogs

什么是whylogs?

whylogs是一个轻量级的开源数据日志记录库,它能够自动生成数据的统计概要(profiles),帮助数据科学家和工程师监控数据质量、检测数据漂移。它特别适合在机器学习流水线中使用,可以跟踪数据在不同阶段的变化情况。

为什么需要自定义函数(UDF)?

在实际项目中,我们经常需要监控一些特定的业务指标或自定义特征,这些指标可能无法通过标准统计量(如均值、方差等)来捕获。whylogs的自定义函数(UDF)功能允许我们扩展其核心功能,添加针对特定业务场景的监控指标。

环境准备

首先需要安装whylogs库,建议使用1.5.0或更高版本:

%pip install 'whylogs>=1.5.0'

准备示例数据

我们创建一个简单的动物数据集作为示例:

import pandas as pd

data = {
    "animal": ["cat", "hawk", "clam", "cat", "mongoose", "octopus"],
    "legs": [4, 2, 1, 4, 4, 8],
    "weight": [4.3, 1.8, 1.3, 4.1, 5.4, 3.2],
}

df = pd.DataFrame(data)

这个数据集包含动物名称、腿的数量和体重三个特征。

创建指标型UDF

指标型UDF针对单个列进行计算,返回一个数值结果。下面我们创建一个判断动物名称是否"酷"的UDF:

import whylogs as why
from whylogs.experimental.core.udf_schema import udf_schema
from whylogs.experimental.core.metrics.udf_metric import register_metric_udf

@register_metric_udf(col_name="animal")
def has_cool_animal_name(text):
    if len(text) > 4:  # 假设名字长度超过4个字符就很"酷"
        return 1
    else:
        return 0

custom_schema = udf_schema()

这个UDF会为每个动物名称计算一个0或1的值,表示名称是否"酷"。

使用UDF进行数据画像

现在我们可以使用这个自定义schema来记录数据:

why.init(force_local=True)
results = why.log(df, name="udf_demo", schema=custom_schema)
profile_view = results.view().to_pandas()

生成的画像会包含一个名为animal.has_cool_animal_name的新特征,显示有多少比例的动物名称被认为是"酷"的。

创建数据集型UDF

与指标型UDF不同,数据集型UDF可以基于多个列进行计算。例如,我们可以计算每只动物的"每条腿的体重":

from whylogs.experimental.core.udf_schema import register_dataset_udf

@register_dataset_udf(["legs", "weight"])
def weight_per_leg(data: pd.DataFrame) -> pd.Series:
    return data["weight"] / data["legs"]

custom_schema2 = udf_schema()
results = why.log(df, schema=custom_schema2)
profile_view = results.view().to_pandas()

这个UDF会创建一个新列,包含每条腿的平均体重值,这个指标可以帮助我们识别那些腿特别多或特别少的动物。

UDF的应用场景

在实际项目中,UDF可以用于各种自定义监控场景:

  1. 业务规则验证:检查数据是否符合业务逻辑
  2. 特征工程:计算复合特征并监控其分布
  3. 异常检测:实现自定义的异常检测逻辑
  4. 数据质量检查:验证特定字段的格式或范围

最佳实践

  1. 保持UDF简单高效:UDF会在每条数据上执行,应避免复杂计算
  2. 明确文档:为每个UDF添加清晰的文档说明其目的和计算逻辑
  3. 版本控制:当修改UDF逻辑时,考虑版本控制以避免监控指标突变
  4. 测试验证:为UDF编写单元测试确保其正确性

总结

whylogs的UDF功能为数据监控提供了极大的灵活性,允许用户根据具体业务需求扩展监控能力。通过合理设计UDF,可以构建针对性的数据质量监控体系,及时发现数据问题,保障机器学习模型和数据管道的可靠性。

whylogs whylabs/whylogs: whylogs是一个轻量级的数据质量监控和数据分析库,能够实时收集和记录特征统计数据,便于后期进行数据质量和异常检测等工作。 whylogs 项目地址: https://gitcode.com/gh_mirrors/wh/whylogs

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

裴驰欣Fitzgerald

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

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

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

打赏作者

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

抵扣说明:

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

余额充值