用于可解释机器学习的 Python 库

2023-06-05 0 212

用于可解释机器学习的 Python 库

制作组中英文书名:用作可说明机器学习的 Python 库

英文书名:Python Libraries for Interpretable Machine Learning

译者:学雷锋制作组(ZeroJ)

用于可解释机器学习的 Python 库

虽然对人工智慧仇恨的害怕日渐突显,专业人士说明数学模型工业生产的预估结论的潜能和说明数学模型另一各方面运转监督机制的潜能变的愈来愈关键。幸运地的是,早已有很多python合作开发辅助工具被合作开发出,借以化解前述难题。Nenon我将对原有4个创建的总体性的译者和说明机器学习数学模型的软件包做概要的规范性叙述。

那些软件包都能透过pip来展开加装,保有健全的文件格式,因此特别强调透过建模来提高可说明性。

yellowbrick

那个软件包其本质上,是scikit-learn的两个扩充,提供更多了许多十分新颖且漂亮的机器学习数学模型建模辅助工具。`visualiser`第一类是核心理念USB,是两个scikit-learn估算器,因此假如你以后熟识scikit-learn的组织工作业务流程,因此将为此十分熟识。

那个建模辅助工具全面覆盖了数学模型优先选择,特点必要性和数学模型操控性预测等各方面。

让他们看两个意味深长的范例。

该软件包能透过pip加装,

pip install yellowbrick

为了展示工具包中的许多特性,他们将利用scikit-learn中的红酒识别数据集。那个数据集包含13个特点和3个目标类别。能透过scikit-learn直接加载。在下面的代码里我引入数据集,并把转换成pandas dataframe。数据集能直接被用来训练数学模型,并不需要其他的数据处理。

import pandas as pd

from sklearn import datasets

wine_data = datasets.load_wine()

df_wine = pd.DataFrame(wine_data.data,columns=wine_data.feature_names)

df_wine[target] = pd.Series(wine_data.target)

利用scikit-learn进一步将数据分为测试集合和训练集。

import pandas as pd

from sklearn import datasets

wine_data = datasets.load_wine()

df_wine = pd.DataFrame(wine_data.data,columns=wine_data.feature_names)

df_wine[target] = pd.Series(wine_data.target)

接下来,他们用yellowbrick的visualiser观察特点之间的相关性。

import pandas as pd

from sklearn import datasets

wine_data = datasets.load_wine()

df_wine = pd.DataFrame(wine_data.data,columns=wine_data.feature_names)

df_wine[target] = pd.Series(wine_data.target)

用于可解释机器学习的 Python 库

现在,他们拟合两个随机森林分类器,并透过另两个visualiser评价其操控性。

from yellowbrick.classifier import ClassificationReport

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier()

visualizer = ClassificationReport(model, size=(1080, 720))

visualizer.fit(X_train, y_train)

visualizer.score(X_test, y_test)

visualizer.poof()

用于可解释机器学习的 Python 库

ELI5

ELI5是另两个建模软件包,在数学模型机器学习数学模型调试和说明其工业生产的预估结论各方面十分有用。它能够同大多数通用的python机器学习软件包一起使用,包括scikit-learn和XGBoost,和Keras。

让他们用ELI5来观察一下上面他们训练的数学模型的特点必要性。

import eli5

eli5.show_weights(model, feature_names = X.columns.tolist())

用于可解释机器学习的 Python 库

默认的,`show_weights`方法采用GAIN来计算权重,但你也能传入其他`importance_type`来控制特点必要性的计算。

也能透过`show_prediction`来观察某两个样本的预估结论的原因。

from eli5 import show_predictionshow_prediction(model, X_train.iloc[1], feature_names = X.columns.tolist(),

show_feature_values=True)

用于可解释机器学习的 Python 库

LIME

LIME(数学模型无关局部可说明)是两个用来说明数学模型做出的预估的软件包。LIME支持对多种分类器的单个样本预估展开说明,因此原生支持scikit-learn。

下面让他们用LIME对前述他们训练的数学模型的许多预估展开说明。

LIME能用pip展开加装

pip install lime

首先他们构建explainer,它透过训练数据集数组,数学模型中用到的特点名称和目标变量的类别名称作为初始化参数。

import lime.lime_tabular

explainer = lime.lime_tabular.LimeTabularExplainer(X_train.values, feature_names=X_train.columns.values.tolist(), class_names=y_train.unique())

接下来,他们创建两个lambda函数,它表示用数学模型预估两个样本。详见那个优秀的,更有深度的LIME教程。

predict_fn = lambda x: model.predict_proba(x).astype(float)

随后,他们利用explainer说明指定样本的预估结论。其结论如下。LIME透过建模的结论,展示特点假如对得到的预估结论产生影响。

exp = explainer.explain_instance(X_test.values[0], predict_fn, num_features=6)

exp.show_in_notebook(show_all=False)

用于可解释机器学习的 Python 库

MLxtend

那个软件包包含一系列机器学习可用的辅助工具函数。包括透过stacking和voting构建的分类器,数学模型的评估,特点的提取、特点工程和建模。除了该软件包的文件格式,这篇论文也是理解软件包更多细节的好资源。

下面让他们利用MLxtend来比较Ensemble后的分类器的分类边界与组成他的子分类器的分类边界有什么不同。

同样MLxtend也能透过pip加装。

pip install mlxtend

引入许多软件包,

from mlxtend.plotting import plot_decision_regions

from mlxtend.classifier import EnsembleVoteClassifier

import matplotlib.gridspec as gridspec

import itertools

from sklearn import model_selection

from sklearn.linear_model import LogisticRegression

from sklearn.naive_bayes import GaussianNB

from sklearn.ensemble import RandomForestClassifier

下面的建模辅助工具一次只能接受两个特点作为输入,因此他们创建了数组[proline, color_intensity]。因为这两个特点在前述利用ELI5预测时,具有最高的特点必要性。

X_train_ml = X_train[[proline, color_intensity]].values

y_train_ml = y_train.values

接下来,他们创建许多分类器,并在训练数据上展开拟合,透过MLxtend建模他们的决策边界。输出自下面的代码。

clf1 = LogisticRegression(random_state=1)

clf2 = RandomForestClassifier(random_state=1)

clf3 = GaussianNB()

eclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], weights=[1,1,1])

value=1.5

width=0.75

gs = gridspec.GridSpec(2,2)

fig = plt.figure(figsize=(10,8))

labels = [Logistic Regression, Random Forest, Naive Bayes, Ensemble]

for clf, lab, grd in zip([clf1, clf2, clf3, eclf],

labels,

itertools.product([0, 1], repeat=2)):

clf.fit(X_train_ml, y_train_ml)

ax = plt.subplot(gs[grd[0], grd[1]])

fig = plot_decision_regions(X=X_train_ml, y=y_train_ml, clf=clf)

plt.title(lab)

用于可解释机器学习的 Python 库

以上绝对不是数学模型可说明和建模软件包的完整列表。这篇博文罗列了包含其他有用的软件包的列表,值得一试。

感谢阅读!

学雷锋制作组是两个由 AI 爱好者组成的译者团队,汇聚五百多位志愿者的力量,分享最新的海外AI资讯,交流关于人工智慧技术领域的行业变革与技术创新的见解。

团队成员有大数据专家、算法工程师、图像处理工程师、产品经理、产品运营、IT咨询人、在校师生;志愿者们来自IBM、AVL、Adobe、阿里、百度等知名企业,北大、清华、港大、中科院、南卡罗莱纳大学、早稻田大学等海内外高校研究所。

假如,你也是位热爱分享的AI爱好者。欢迎与学雷锋制作组一起,学习新知,分享成长。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务