机器学习模型可解释性:Shapash库解析

在人工智能飞速发展的今天,机器学习技术已经成为全球数字技术的主导力量。然而,机器学习模型的黑箱特性常常让人难以理解其内部的复杂计算。幸运的是,Python社区提供了一个名为Shapash的库,它能够帮助揭开机器学习模型的神秘面纱,让模型的解释变得简单直观。

如果对机器学习有所了解,那么一定听说过数据、训练、测试、准确率等术语。许多人都能够编写机器学习脚本,但往往忽视了模型背后的计算过程。机器学习模型常被称为黑箱模型,因为输入数据后,模型内部进行了大量的计算,最终输出结果,而却无法窥见这些计算的具体细节。

Shapash库简介

Shapash库是由MAIF数据科学家团队开发的,旨在使机器学习模型变得可解释。这个库非常容易使用,并且拥有许多令人惊叹的特性。它能够通过可视化的方式展示数据集,使得结果清晰易懂,极大地方便了数据科学家对模型的理解。

安装Shapash

要安装Shapash库,需要打开命令提示符并输入以下代码:

pip install shapash

使用Shapash解释RandomForestRegressor

接下来,将使用Shapash库来解释RandomForestRegressor模型。首先,需要构建一个机器学习模型。将从一个具体的数据集中获取数据,并应用模型以获得结果的准确性。

import pandas as pd import numpy as np from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.ensemble importRandomForestRegressor

将创建一个数据框,并填充数据中的空值。然后,将数据框分为自变量和因变量,以便训练和测试数据。之后,使用train_test_split方法来分割自变量和因变量。分割后,通过缩放来平衡值。最后,将RandomForestRegressor模型应用于训练数据。

regressor =RandomForestRegressor(ccp_alpha=0.0) fit_regressor = regressor.fit(xtrain_scl, ytrain)

使用Shapash理解模型

现在,将创建一个SmartExplainer对象,它允许模型与数据一起工作,但这个对象仅用于数据挖掘步骤。

from shapash.explainer.smart_explainer import SmartExplainer SE = SmartExplainer() SE.compile( x=xtest, model=regressor, )

这是执行的最重要的步骤。将选择数据集中对预测贡献最大的3个特征。

app = SE.run_app(title_story='Concrete_Data')

点击服务器链接查看Web应用。可以看到,当执行时,一个单独的Web应用被打开,其中包含多种类型的图表和抓取。如果想停止这个应用,需要使用app_name.kill()方法。

se = SmartExplainer() se.compile( x=xtest, model=rnd, # 创建图表 se.plot.features_importance()

这个图表显示了数据集中哪个特征具有多少权重,可以看到水泥是数据中最重要的特征。

SE = SmartExplainer() SE.compile( x=xtest, model=rnd, # 创建图表 se.plot.features_importance()

现在,是时候使用Shapash内置的to_smartpredictor()函数来预测混凝土的强度了。

prediction = SE.to_smartpredictor() prediction.save('./predictor.pkl')

在这一步,需要使用内置的load_smartpredictor函数加载这个pickle文件。

from shapash.utils.load_smartpredictor import load_smartpredictor predictor_load = load_smartpredictor('./predictor.pkl') load.add_input(x=x, ypred=y) detailed = load.detail_contributions() detailed_contributions.head()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485