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 npfrom sklearn.datasets import fetch_california_housingfrom evidently import ColumnMappingfrom 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.framehousing_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
材料獲取
技術要學會分享、交流,不建議閉門造車。一個人可以走的很快、一堆人可以走的更遠。
資料干貨、資料分享、數據、技術交流提升,均可加交流群獲取,群友已超過2000人,添加時最好的備注方式為:來源+興趣方向,方便找到志同道合的朋友。
方式①、添加微信號:dkl88194,備注:來自CSDN + 資料
方式②、微信搜索公眾號:Python學習與數據挖掘,后臺回復: 資料
1、數據分析實戰寶典
2、100個超強算法模型
我們打造了《100個超強算法模型》,特點:從0到1輕松學習,原理、代碼、案例應有盡有,所有的算法模型都是按照這樣的節奏進行表述,所以是一套完完整整的案例庫。
很多初學者是有這么一個痛點,就是案例,案例的完整性直接影響同學的興致。因此,我整理了 100個最常見的算法模型,在你的學習路上助推一把!