Evidently 是一个面向数据科学家和机器学习工程师的开源 Python 库。它有助于评估、测试和监控从验证到生产的数据和 ML 模型。它适用于表格、文本数据和嵌入。

简介

Evidently 是一个开源的 Python 工具,旨在帮助构建对机器学习模型的监控,以确保它们的质量和在生产环境运行的稳定性。

它可以用于模型生命周期的多个阶段:作为 notebook 中检查模型的仪表板,作为 pipeline 的一部分,或者作为部署后的监控。

Evidently 特别关注模型漂移,同时也提供了模型质量检查、数据质量检查和目标漂变监测等功能。此外,它还提供了多种内置的指标、可视化图形和测试,可以轻松地放入报告、仪表板或测试驱动的 pipeline 中。

功能

Evidently采用了由 3 个组件组成的模块化方法:报告测试套件监控仪表板

它们涵盖不同的使用场景:从临时分析到自动化管道测试和持续监控。

1. 测试套件:批量模型检查

测试执行结构化数据和机器学习模型质量检查,可以手动设置条件,也可以让 Evidently 根据参考数据集生成条件,返回明确的通过失败结果。可以从 50 多个测试创建测试套件或运行预设之一。例如,测试数据稳定性或回归性能。

输入:一个或两个数据集,如 pandas.DataFrames 或 csv。

获取输出:在 Jupyter Notebook 或 Colab 中,导出 HTML、JSON 或 Python 字典。

主要用例:基于测试的机器学习监控,以将测试作为机器学习管道中的一个步骤来运行。例如,当收到一批新的数据、标签或生成预测时。可以根据结果构建条件工作流程,例如触发警报、重新训练或获取报告。

2. 报告:交互式可视化

计算各种指标并提供丰富的交互式可视化报告,可以根据各个指标创建自定义报告,或运行涵盖模型或数据性能特定方面的预设。例如,数据质量或分类性能。

输入:一个或两个数据集,如 pandas.DataFrames 或 csv。

如何获取输出:在 Jupyter Notebook 或 Colab 中,导出 HTML 文件、JSON 或 Python 字典。

主要用例:分析和探索,有助于直观地评估数据或模型性能。例如,在探索性数据分析期间、对训练集进行模型评估、调试模型质量衰减时或比较多个模型时。

3. 机器学习监控仪表板

您可以自行托管机器学习监控仪表板,以随着时间的推移可视化指标和测试结果。此功能位于报告和测试套件之上,必须将它们的输出存储为 Evidently JSON snapshots,作为 Evidently Monitoring UI 的数据源。

输入snapshots,记录到对象存储中。

输出:可作为网络应用程序使用的自托管仪表板。

主要用例:当需要实时仪表板来查看一段时间内的所有模型和指标时,持续监控。

安装&使用

pip install evidently
pip install jupyter
# 安装 jupyter Nbextion
pip install jupyter_contrib_nbextensions
# 在 jupyter 扩展中安装并启用 evidently
jupyter nbextension install --sys-prefix --symlink --overwrite --py evidently
jupyter nbextension enable evidently --py --sys-prefix

大部分情况下,需要在Jupyter notebook中使用。

使用步骤很简单,一般分三步:1、导入模块 2、处理数据 3、获取报告

举个例子,先导入所需模块

import pandas as pd
import numpy as np from sklearn.datasets import fetch_california_housing from evidently import ColumnMapping from evidently.report import Report
from evidently.metrics.base_metric import generate_column_metrics
from evidently.metric_preset import DataDriftPreset, TargetDriftPreset, DataQualityPreset, RegressionPreset
from evidently.metrics import * from evidently.test_suite import TestSuite
from evidently.tests.base_test import generate_column_tests
from evidently.test_preset import DataStabilityTestPreset, NoTargetPerformanceTestPreset
from evidently.tests import *

导入和处理数据

data = fetch_california_housing(as_frame=True)
housing_data = data.frame housing_data.rename(columns={'MedHouseVal': 'target'}, inplace=True)
housing_data['prediction'] = housing_data['target'].values + np.random.normal(0, 5, housing_data.shape[0]) reference = housing_data.sample(n=5000, replace=False)
current = housing_data.sample(n=5000, replace=False)

获取报告

report = Report(metrics=[
DataDriftPreset(),
]) report.run(reference_data=reference, current_data=current)
report

官方提供了很多获取报告的代码模板:https://docs.evidentlyai.com/presets/all-presets

evidently 功能十分强大,这里展示的只是其能力的冰山一角。了解更多,可以参考以下链接:

官网:https://www.evidentlyai.com/

文档:https://docs.evidentlyai.com/

开源地址:https://github.com/evidentlyai/evidently

一个神奇的Python库:Evidently,机器学习必备的更多相关文章

  1. 一个交互式可视化Python库——Bokeh

    本篇为<Python数据可视化实战>第十篇文章,我们一起学习一个交互式可视化Python库--Bokeh. Bokeh基础 Bokeh是一个专门针对Web浏览器的呈现功能的交互式可视化Py ...

  2. 数据处理一条龙!这15个Python库不可不知

    如果你是一名数据科学家或数据分析师,或者只是对这一行业感兴趣,那下文中这些广受欢迎且非常实用的Python库你一定得知道. 从数据收集.清理转化,到数据可视化.图像识别和网页相关,这15个Python ...

  3. python库-Arrow处理时间

    Arrow是一个处理时间的python库,能一键转换dates/times/timestamps等时间格式而不需要大量导致各种时间模块和格式转换函数,十分快捷方便 使用Arrow需要两步转换操作: 1 ...

  4. 初识TPOT:一个基于Python的自动化机器学习开发工具

    1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...

  5. 机器学习 python库 介绍

    开源机器学习库介绍 MLlib in Apache Spark:Spark下的分布式机器学习库.官网 scikit-learn:基于SciPy的机器学习模块.官网 LibRec:一个专注于推荐算法的j ...

  6. 推荐5个机器学习Python 库,国内外评价超高

    机器学习令人无比神往,但从事这个工作的人可能并不这么想. 机器学习的工作内容往往复杂枯燥又困难——通过大量重复工作进行提升必不可少: 汇总工作流及传输渠道.设置数据源以及在内部部署和云部署的资源之间来 ...

  7. sopt:一个简单的python最优化库

    引言     最近有些朋友总来问我有关遗传算法的东西,我是在大学搞数学建模的时候接触过一些最优化和进化算法方面的东西,以前也写过几篇博客记录过,比如遗传算法的C语言实现(一):以非线性函数求极值为例和 ...

  8. 程序员用于机器学习数据科学的3个顶级 Python 库

    NumPy NumPy(数值 Python 的简称)是其中一个顶级数据科学库,它拥有许多有用的资源,从而帮助数据科学家把 Python 变成一个强大的科学分析和建模工具.NumPy 是在 BSD 许可 ...

  9. #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库

    在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...

  10. 从开发属于你自己的第一个 Python 库,做一名真正的程序员「双语版」

    你好,我是悦创.之前我在 CSDN 编写了一篇开发 Python 库的教程,有人加我提问到的一些问题,我来更新一下这篇文章:https://blog.csdn.net/qq_33254766/arti ...

随机推荐

  1. 代替gets()的新操作

    1 scanf("%[^\n]", s); ^是"非"  \n是换行 所以这就是一直读到\n才结束

  2. 五分钟 k8s 实战-应用探针

    今天进入 kubernetes 的运维部分(并不是运维 kubernetes,而是运维应用),其实日常我们大部分使用 kubernetes 的功能就是以往运维的工作,现在云原生将运维和研发关系变得更紧 ...

  3. 3. Shell 条件判断

    重点: 条件测试. read. Shell 环境配置. case. for. find. xargs. gzip,bzip2,xz. tar. sed. 1)Shell 的配置文件 Bash Shel ...

  4. 【uniapp】【外包杯】学习笔记day05 | 页面制作+git安装+云存储

    没啥好说的,昨天的任务没有完成,网上说的是一套,我这边出现的情况又是一种,欸...善莫大焉 今天又重新开始搞,有了一点起色,然后用了git进行云存储 明天计划把这个给搞定吧,累发财了 git做完了 在 ...

  5. Centos 7在线安装JDK1.8+Tomcat+MySQL8.0+Nginx

    一.安装JDK 注: 以下命令环境在Xshell中进行. 温馨提示: 在线安装方式需要有网速的前提,有的软件下载需要大量时间. 1.查询出系统自带的OpenJDK及版本 rpm -qa | grep ...

  6. SpringBoot Seata 死锁问题排查

    现象描述:Spring Boot项目,启动的时候卡住了,一直卡在那里不动,没有报错,也没有日志输出 但是,奇怪的是,本地可以正常启动 好吧,姑且先不深究为什么本地可以启动而部署到服务器上就无法启动的问 ...

  7. [HDU4117] GRE

    Recently George is preparing for the Graduate Record Examinations (GRE for short). Obviously the mos ...

  8. Pytorch实现YOLOv3训练自己的数据集

    1.说明: 最近一直在研究深度学习框架PyTorch,就想使用pytorch去实现YOLOv3的object detection.在这个过程中也在各大论坛.贴吧.CSDN等中看了前辈们写的文章,在这里 ...

  9. Mybatis出现Caused by: net.sf.jsqlparser.parser.ParseException: ....异常

    今天在开发项目中遇到了一个奇怪的异常,记录一下把! 异常信息如下(截取了主要的部分) Caused by: net.sf.jsqlparser.parser.ParseException: Encou ...

  10. Java中获取Class对象的三种方式

    在Java中,我们经常需要获取某个类的Class对象,以便进行反射操作.动态加载类或者获取类的信息.本文将介绍Java中获取Class对象的三种常见方式. 1. 使用.class语法 获取Class对 ...