作为数据建模开发者,我们期望利用机器学习模型来分析数据和解决商业问题。无论我们是开发一个简单的模型还是一个复杂的模型,模型验证对于衡量我们工作都是至关重要。

在本文中,我将分享三个非常棒的 Python 工具包,它们可以让我们验证机器学习模型时变得更轻松。

1、Evidently

Evidently 是一个用于分析和监控机器学习模型的开源 python 包。开发该软件包的目的是建立一个易于监控的机器学习仪表盘,并检测数据中的漂移。它是专门为生产而设计的,所以在有数据管道的情况下使用它会更好。然而,即使在开发阶段,您仍然可以使用它。

让我们试着用它来验证我们的机器学习模型开发。在现实环境中,我们会有一个参考数据集和生产数据集,但对于我们现在的情况,让我们使用训练和测试数据。

作为初学者,我们需要安装软件包

pip install evidently

安装包后,我们可以尝试检测数据集中发生的数据漂移。数据漂移是指参考数据或之前时间线中的数据与当前数据在统计上存在差异的现象。

import pandas as pd
train = pd.read_csv('churn-bigml-80.csv')
test = pd.read_csv('churn-bigml-20.csv')

数据集需要预处理,我现在只想使用数字数据

train.drop(['State', 'International plan', 'Voice mail plan'], axis =1,inplace = True)
test.drop(['State', 'International plan', 'Voice mail plan'], axis =1, inplace = True)
train['Churn'] = train['Churn'].apply(lambda x: 1 if x == True else 0)
test['Churn'] = test['Churn'].apply(lambda x: 1 if x == True else 0)

数据准备好后,我们将构建仪表板来检测任何漂移。显然需要我们独立导入每个标签;对于数据漂移,我们将使用 DataFloftTab。

from evidently.dashboard import Dashboard
from evidently.tabs import  DataDriftTab
data_drift_report = Dashboard(tabs=[DataDriftTab()])
data_drift_report.calculate(train, test, column_mapping = None)
data_drift_report.save("reports/my_report.html")

我们将数据保存在 HTML 报告中,并在另一个选项卡中打开它。

正如你在上面看到的,有一个监视器仪表板。我们可以在这个仪表板中看到每个特征分布和数据漂移的统计测试。在我们的样本中,训练数据和测试数据之间没有显示任何漂移,这意味着所有数据分布都是相似的。

它也可以用来创建一个机器学习分类仪表板来监控机器学习的健康状况。例如,让我们使用之前的数据训练一个分类模型。

from sklearn.neighbors import
X_train = train.drop('Churn', axis =1)
X_test = test.drop('Churn', axis =1)
y_train = train['Churn']
y_test = test['Churn']
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X_train, y_train)

在拟合模型之后,我们需要实际结果和预测结果。我们还需要训练和测试数据集完好无损。

train_predictions = model.predict(X_train)
test_predictions = model.predict(X_test)
X_train['target'] = y_train
X_train['prediction'] = train_predictions
X_test['target'] = y_test
X_test['prediction'] = test_predictions

监视器还需要我们映射我们使用的列。在本例中,我们将使用中的 ColumnMapping 进行设置。

from evidently.pipeline.column_mapping import ColumnMapping
churn_column_mapping = ColumnMapping()
churn_column_mapping.target = 'target'
churn_column_mapping.prediction = 'prediction'
churn_column_mapping.numerical_features =train.drop('Churn', axis =1).columns

所有准备工作完成后,让我们设置分类器监视器仪表板。

from evidently.tabs.base_tab import Verbose
from evidently.tabs import ClassificationPerformanceTab
churn_model_performance_dashboard = Dashboard(tabs=[ClassificationPerformanceTab(verbose_level=Verbose.FULL)])
churn_model_performance_dashboard.calculate(X_train, X_test, column_mapping = churn_column_mapping)
churn_model_performance_dashboard.save("reports/classification_churn.html")

图如下

如上面所示,我们可以监控机器学习模型指标和每个特征的预测,可以知道在接收新数据时是否存在差异。

官方文档:`https://docs.evidentlyai.com/

2、Deepchecks

Deepchecks 是一个 python 工具包,只需用几行代码就可以验证我们的机器学习模型。许多 API 可用于检测数据漂移、标签漂移、列车测试比较、评估模型等。Deepchecks 非常适合在研究阶段和模型投产前使用。

首先,让我们安装 Deepchecks 包。

pip install deepchecks

安装完成后,我们需要准备训练数据集和机器学习模型。对于我们的示例,我将使用 deepchecks 中的 Iris 数据集。

import pandas as pd
from deepchecks.datasets.classification import iris
from sklearn.ensemble import RandomForestClassifier
# Load Data
iris_df = iris.load_data(data_format='Dataframe', as_train_test=False)

加载数据后,我们需要拆分训练、测试数据并加载机器学习模型。你可以用模型来拟合数据,我使用现成的模型。

df_train, df_test = iris.load_data(data_format='Dataframe', as_train_test=True)
label_col = "target"
rf_clf = iris.load_fitted_model()

如果 Deepchecks 将 Pandas 数据帧转换为 Deepchecks 数据集对象,那么数据会更好处理。

from deepchecks import Dataset
ds_train = Dataset(df_train, label=label_col, cat_features=[])
ds_test =  Dataset(df_test,  label=label_col, cat_features=[])

一切都准备好了。我们只需要在 Jupyter notebook 上运行即可。

from deepchecks.suites import full_suite
suite = full_suite()
suite.run(train_dataset=ds_train, test_dataset=ds_test, model=rf_clf)

如下图

完整报告包含许多信息,例如混淆矩阵、简单模型比较、混合数据类型、数据漂移等。检查机器学习模型所需的所有信息都可以在单个代码运行中获得。

3、TFDV

TFDV(TensorFlow Data Validation) 是 TensorFlow 开发人员开发的用于管理数据质量问题的 python 包。它用于自动描述数据统计、推断数据模式以及检测传入数据中的任何异常。

让我们尝试安装软件包

pip install tensorflow-data-validation

首先,我们需要导入包并从 CSV 数据生成统计对象。我使用我们之前使用的数据集作为参考数据集。

import tensorflow_data_validation as tfdv
stats = tfdv.generate_statistics_from_csv(data_location='churn-bigml-80.csv')

可以将统计对象的统计信息可视化。

tfdv.visualize_statistics(stats)

如图所示

TFDV 包不仅限于生成统计可视化,还有助于检测传入数据中的任何变化。为此,我们需要推断原始或参考数据模式。

schema = tfdv.infer_schema(stats)
tfdv.display_schema(schema)

该模式将用于针对任何传入数据进行验证,如果传入数据没有在模式中推断出任何列或类别,那么 TFDV 将通知异常的存在。我们将使用以下代码和测试数据来实现这一点。

new_csv_stats = tfdv.generate_statistics_from_csv(data_location='churn-bigml-20.csv')anomalies = tfdv.validate_statistics(statistics=new_csv_stats, schema=schema)
tfdv.display_anomalies(anomalies)

结论

机器学习模型项目不是一次性的,它是一个持续的过程。如果存在任何异常,则需要对生产中的模型进行持续监控。今天分享了三个 python 工具包,我希望这对你有帮助!

(完)
往期精彩回顾适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑
AI基础下载机器学习交流qq群955171419,加入微信群请扫码:

【机器学习】机器学习模型验证,这3个 Python 包可轻松解决95%的需求!相关推荐

  1. ML之Validation:机器学习中模型验证方法的简介、代码实现、案例应用之详细攻略

    ML之Validation:机器学习中模型验证方法的简介.代码实现.案例应用之详细攻略 目录 模型验证方法的简介 1.Hold-out验证 2.K-折交叉验证 3.自助重采样 模型验证方法的代码实现 ...

  2. 通过pip下载python包缓慢的解决方法

    通过pip下载python包缓慢的解决方法 参考文章: (1)通过pip下载python包缓慢的解决方法 (2)https://www.cnblogs.com/ambitious-to-49/p/11 ...

  3. 验证集准确率上不去_Python机器学习之“模型验证”

    有监督机器学习模型的基本步骤: (1) 选择模型类: (2) 选择模型超参数: (3) 用模型拟合训练数据: (4) 用模型预测新数据的标签. 前两步--模型选择和超参数选择--可能是有效使用各种机器 ...

  4. 万能钥匙也不能解开的wifi?那用Python帮你轻松解决

    平时回家看用手机看视频.打游戏的时候,如果没有wifi是不是特别心疼自己的流量?当然了如果你有无限流量那就当我没说了哈,没有wifi但是我可以用万能钥匙破解别人的wifi呀,万能钥匙是什么?如果你的手 ...

  5. 发布自己的Python包(Pypi)

    发布自己的Python包(Pypi) 我们经常使用 Pypi 来安装包,但是有时候我们也想要发布自己的 Pypi 包,有可能我们写了一个特别牛的包,也有可能我们只是想使用自己常用的一些轮子,可能这是我 ...

  6. python进行机器学习(四)之模型验证与参数选择

    一.模型验证 进行模型验证的一个重要目的是要选出一个最合适的模型,对于监督学习而言,我们希望模型对于未知数据的泛化能力强,所以就需要模型验证这一过程来体现不同的模型对于未知数据的表现效果. 这里我们将 ...

  7. python机器学习——十次交叉验证训练的数据准备算法

    摄于 2017年4月21日 台湾垦丁船帆石海滩 前言 python强大的机器学习包scikit-learn可以直接进行交叉分割,之所以写个相当于锻炼自己思维. 这两天本来打算开始写朴素贝叶斯分类器的算 ...

  8. 机器学习——决策树模型:Python实现

    机器学习--决策树模型:Python实现 1 决策树模型的代码实现 1.1 分类决策树模型(DecisionTreeClassifier) 1.2 回归决策树模型(DecisionTreeRegres ...

  9. python网格搜索核函数_机器学习笔记——模型调参利器 GridSearchCV(网格搜索)参数的说明...

    算法 数据结构 机器学习笔记--模型调参利器 GridSearchCV(网格搜索)参数的说明 GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数.但是这个 ...

最新文章

  1. 高斯模糊与高反差保留
  2. ML之SVM:调用(sklearn的lfw_people函数在线下载55个外国人图片文件夹数据集)来精确实现人脸识别并提取人脸特征向量
  3. Iterator 遍历器的简单使用
  4. JMeter压测入门简单使用
  5. [react] 可以使用TypeScript写React应用吗?怎么操作?
  6. 对Linux课程内容的建议,Linux课程笔记 Day01 课程内容总结(示例代码)
  7. 7-142 最大子列和问题 (20 分)
  8. Access 利用模版实现条码打印功能
  9. WPF视频教程系列笔记
  10. chap10 图像分割(数字图像处理/冈萨雷斯)
  11. mysql-使用Navicat导出sql查询数据
  12. 联想小新Pro14 2023款和2022款区别
  13. 2021年程序人生的随想总结
  14. excel分析数据的工具有哪些?
  15. (5)CC3200学习之串口
  16. 【Python】什么是递归函数?
  17. oh-my-zsh的安装与基本配置
  18. 在openssl中对SM2的公私钥进行加解密的验证
  19. 苹果手机左上角的数字怎么弄_微信朋友圈该好友已设置仅你可见怎么弄 设置仅你可见方法...
  20. [iOS]-Category、Extension和关联对象

热门文章

  1. Winfrom实用代码项目
  2. Web 标准实践系列(一)——Google 的首页
  3. windows下python虚拟环境virtualenv安装和使用
  4. linux、sql 常用的一些特殊符号
  5. 学习string,stringBuffer时遇到的问题
  6. 怎么实现登录之后跳转到登录之前的页面?SpringMVC+Freemarker
  7. Spring REST
  8. Tomcat、JBOSS、WebSphere、WebLogic、Apache之间的区别
  9. python numpy创建矩阵、并归一化_每通道以numpy为单位对一批图像进行归一化处理...
  10. c语言 异或_C语言经典例题来袭!5大方法告诉你答案