一个神奇的Python库:Evidently,机器学习必备
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,机器学习必备的更多相关文章
- 一个交互式可视化Python库——Bokeh
本篇为<Python数据可视化实战>第十篇文章,我们一起学习一个交互式可视化Python库--Bokeh. Bokeh基础 Bokeh是一个专门针对Web浏览器的呈现功能的交互式可视化Py ...
- 数据处理一条龙!这15个Python库不可不知
如果你是一名数据科学家或数据分析师,或者只是对这一行业感兴趣,那下文中这些广受欢迎且非常实用的Python库你一定得知道. 从数据收集.清理转化,到数据可视化.图像识别和网页相关,这15个Python ...
- python库-Arrow处理时间
Arrow是一个处理时间的python库,能一键转换dates/times/timestamps等时间格式而不需要大量导致各种时间模块和格式转换函数,十分快捷方便 使用Arrow需要两步转换操作: 1 ...
- 初识TPOT:一个基于Python的自动化机器学习开发工具
1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...
- 机器学习 python库 介绍
开源机器学习库介绍 MLlib in Apache Spark:Spark下的分布式机器学习库.官网 scikit-learn:基于SciPy的机器学习模块.官网 LibRec:一个专注于推荐算法的j ...
- 推荐5个机器学习Python 库,国内外评价超高
机器学习令人无比神往,但从事这个工作的人可能并不这么想. 机器学习的工作内容往往复杂枯燥又困难——通过大量重复工作进行提升必不可少: 汇总工作流及传输渠道.设置数据源以及在内部部署和云部署的资源之间来 ...
- sopt:一个简单的python最优化库
引言 最近有些朋友总来问我有关遗传算法的东西,我是在大学搞数学建模的时候接触过一些最优化和进化算法方面的东西,以前也写过几篇博客记录过,比如遗传算法的C语言实现(一):以非线性函数求极值为例和 ...
- 程序员用于机器学习数据科学的3个顶级 Python 库
NumPy NumPy(数值 Python 的简称)是其中一个顶级数据科学库,它拥有许多有用的资源,从而帮助数据科学家把 Python 变成一个强大的科学分析和建模工具.NumPy 是在 BSD 许可 ...
- #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库
在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...
- 从开发属于你自己的第一个 Python 库,做一名真正的程序员「双语版」
你好,我是悦创.之前我在 CSDN 编写了一篇开发 Python 库的教程,有人加我提问到的一些问题,我来更新一下这篇文章:https://blog.csdn.net/qq_33254766/arti ...
随机推荐
- Petals
------------恢复内容开始------------ 打开发现一堆地址冒红 滑倒后面发现E8,根据经验应该是花指令考点 然后D-->nop-->C-->P得到正常结果 然后第 ...
- NLP技术如何为搜索引擎赋能
在全球化时代,搜索引擎不仅需要为用户提供准确的信息,还需理解多种语言和方言.本文详细探讨了搜索引擎如何通过NLP技术处理多语言和方言,确保为不同地区和文化的用户提供高质量的搜索结果,同时提供了基于Py ...
- 错误记录-MariaDB连接异常
简介: 问题: C#,VS2022,mariadb-10.11.5-winx64,using MySql.Data.MySqlClient; 在执行connection.Open()时抛出异常:Sys ...
- Java笔记——常用类
一.API概述 JDK中提供的各种功能的Java类 二.Object类 概述 类层次结构的根类 所有类都直接或间接的继承自该类 Class Object是类object结构的根.每个Class都有ob ...
- i-MES生产制造管理系统-总览
前言 说起 MES 就不得不说 ERP,但是 ERP 大家基本上都知道,MES 就不一定了,常见的 ERP 系统包括 SAP.金蝶.用友等,ERP的流程相对来说也比较统一:MES就不同了,基本上熟悉业 ...
- serdes与PCIE的区别
serdes和PCIE是两种非常常见的总线.因为PCIE也是差分信号传输,所以做硬件时比较难区别PCIE和serdes的具体差异点. 两者之间的区别主要表现在以下几点: 1.PCIE使用了SERDES ...
- Winform 好看控件库推荐:MaterialSkin.2
MaterialSkin.2 控件包是在 MaterialSkin 及基础上二次开发而来的,在原控件基础上修复了一些Bug,丰富了主题以及动画效果,效果非常好. MaterialSkin.2 现在处于 ...
- 34. 干货系列从零用Rust编写负载均衡及代理,异步测试在Rust中的实现
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...
- ubuntu安装opencv的正确方法
本文介绍的是如何安装ubuntu下C++接口的opencv 1.安装准备: 1.1安装cmake sudo apt-get install cmake 1.2依赖环境 sudo apt-get ins ...
- U盘加密技术有哪些先进的保护措施?
华企盾DSC数据防泄密系统的U盘加密技术采用了一系列先进的保护措施,以确保高水平的数据安全.系统采用强大的加密算法,如AES256(高级加密标准),确保对U盘中的数据进行不可逆的强加密,防范了未经授权 ...