python机器学习五子棋_可解释机器学习Python库

本文介绍了四个Python库:yellowbrick、ELI5、LIME和MLxtend,用于机器学习模型的解释和可视化。这些库支持scikit-learn、XGBoost和Keras等,提供模型预测的解释、特征重要性评估等功能。通过实例展示了如何使用这些库来解释五子棋相关的机器学习模型。
摘要由CSDN通过智能技术生成
0a7a2eadb929f9b67f7622b91d6ef6bd.gif

编辑 | sunlei

发布 | ATYUN订阅号 

b2419cc8ceede40c6057f8b23d868726.png

随着对人工智能中偏见的担忧变得越来越突出,企业能够解释其模型所产生的预测以及模型本身如何工作,变得越来越重要。幸运的是,越来越多的python库正在开发来解决这个问题。在下面文章中,我将简要介绍四个最成熟的机器学习模型的解释和解释软件包。

以下库都是pip可安装的,带有良好的文档,并且强调可视化解释。

yellowbrick

这个库本质上是scikit-learn库的一个扩展,为机器学习模型提供了一些非常有用和漂亮的可视化。visualiser对象,即核心接口,是scikit-learn评估器,因此如果您习惯于使用scikit-learn,那么工作流程应该非常熟悉。

可以呈现的可视化包括模型选择、特征导入和模型性能分析。

让我们看几个简单的例子。

库可以通过pip安装。 

1pip install yellowbrick

为了说明一些特性,我将使用一个名为wine recognition set的scikit-learn数据集。这个数据集有13个特性和3个目标类,可以直接从scikit-learn库加载。在下面的代码中,我导入数据集并将其转换为数据帧。数据可以在分类器中使用,而不需要任何额外的预处理。 

1import pandas as pd
2from sklearn import datasets
3wine_data = datasets.load_wine()
4df_wine =
5pd.DataFrame(wine_data.data,columns=wine_data.feature_names)
6df_wine['target'] = pd.Series(wine_data.target)

我还使用scikit-learn将数据集进一步分解为测试和训练。

1from sklearn.model_selection import train_test_split
2X = df_wine.drop(['target'], axis=1)
3y = df_wine['target']
4X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

接下来,让我们使用Yellowbricks 可视化工具来查看数据集中各功能之间的相关性。

1from yellowbrick.features import Rank2D
2import matplotlib.pyplot as plt
3visualizer = Rank2D(algorithm="pearson",  size=(1080, 720))
4visualizer.fit_transform(X_train)
5visualizer.poof()

f9ab036884ef1d905d25894abd8a2e59.png

现在让我们安装一个随机森林分类器,并用另一个可视化器评估性能。 

1from yellowbrick.classifier import ClassificationReport
2from sklearn.ensemble import RandomForestClassifier
3model =  RandomForestClassifier()
4visualizer = ClassificationReport(model, size=(1080, 720))
5visualizer.fit(X_train, y_train)
6visualizer.score(X_test, y_test)
7visualizer.poof()

bc40d713aaa3632a2d81ed8ae7862633.png

ELI5

ELI5是另一个可视化库,用于调试机器学习模型并解释它们所生成的预测。它与最常见的python机器学习库一起工作,包括scikit-learn、XGBoost和Keras。

让我们使用ELI5来检查我们上面训练的模型的特性重要性。 

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

03fb73e76b1fb4ba307c888eca16fc62.png

默认情况下,“显示权重”方法使用“增益”来计算权重,但可以通过添加“重要性”类型参数来指定其他类型。

您还可以使用Show_Prediction来检查单个预测的原因。 

1from eli5 import show_prediction
2show_prediction(model, X_train.iloc[1], feature_names =
3X.columns.tolist(),
4show_feature_values=True)

a6bf4146179967b4ef625dc47473925c.png

LIME

LIME(与本地可解释模型无关的解释)是一个用来解释机器学习算法做出的预测的软件包。Lime支持从广泛的分类器中解释单个预测,并且内置了对scikit-learn的支持。

让我们使用Lime来解释我们之前训练的模型中的一些预测。

Lime可以通过pip安装。 

1pip install lime

首先,我们构建解释器。这将训练数据集作为一个数组、模型中使用的功能的名称以及目标变量中的类的名称。 

1import lime.lime_tabular
2explainer = lime.lime_tabular.LimeTabularExplainer(X_train.values,
3feature_names=X_train.columns.values.tolist(),
4class_names=y_train.unique())

接下来,我们创建一个lambda函数,它使用模型对数据样本进行预测。这是借用了这个优秀的,更深入的Lime教程。 

1predict_fn = lambda x: model.predict_proba(x).astype(float)
然后,我们使用解释器对选定的示例解释预测。结果如下所示。Lime生成了一个可视化视图,显示了这些特性是如何对这个特定的预测做出贡献的。 
1exp = explainer.explain_instance(X_test.values[0], predict_fn,
2num_features=6)
3exp.show_in_notebook(show_all=False)

d6dd3213054a3cf2ae82c8545a5c2ca2.png

MLxtend

这个库包含许多机器学习的辅助函数。这包括叠加和投票分类器、模型评估、特征提取以及工程和绘图。除了文档之外,本文还提供了一个很好的资源,可以更详细地了解这个包。

让我们使用MLxtend来比较投票分类器与其组成分类器的决策边界。

同样,它可以通过pip安装。 

1pip install mlxtend

我使用的导入如下所示。 

1from mlxtend.plotting import plot_decision_regions
2from mlxtend.classifier import EnsembleVoteClassifier
3import matplotlib.gridspec as gridspec
4import itertoolsfrom sklearn import model_selection
5from sklearn.linear_model import LogisticRegression
6from sklearn.naive_bayes import GaussianNB
7from sklearn.ensemble import RandomForestClassifier

下面的可视化一次只能处理两个特性,因此我们首先创建一个包含特性proline和color_intensity的数组。我选择这些是因为它们在我们之前使用ELI5检查的所有特性中具有最高的权重。 

1X_train_ml = X_train[['proline', 'color_intensity']].values
2y_train_ml = y_train.values

接下来,我们创建分类器,将它们与训练数据相匹配,并使用MLxtend可视化决策边界。输出如下代码所示。

 1clf1 = LogisticRegression(random_state=1)
2clf2 = RandomForestClassifier(random_state=1)
3clf3 = GaussianNB()
4eclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], weights=[1,1,1])
5value=1.5
6width=0.75
7gs = gridspec.GridSpec(2,2)
8fig = plt.figure(figsize=(10,8))
9labels = ['Logistic Regression', 'Random Forest', 'Naive Bayes', 'Ensemble']
10for clf, lab, grd in zip([clf1, clf2, clf3, eclf],
11                         labels,
12                         itertools.product([0, 1], repeat=2)):
13
14    clf.fit(X_train_ml, y_train_ml)
15    ax = plt.subplot(gs[grd[0], grd[1]])
16    fig = plot_decision_regions(X=X_train_ml, y=y_train_ml, clf=clf)
17    plt.title(lab)

b2419cc8ceede40c6057f8b23d868726.png

这绝不是一个用于解释、可视化和解释机器学习模型的库的详尽清单。但这同样也是一篇优秀的文章,因为它包含了一长串其他有用的库。感谢你的阅读!

原文链接:

https://towardsdatascience.com/python-libraries-for-interpretable-machine-learning-c476a08ed2c7

c78ed407e82006dd22e7ffff474847bb.gif

End

13a0f7c1d0fc88db666ac1c92e79e48c.png

推荐阅读

Recommended reading

c3d92534096fc08db20e2cfcc90a3ca1.png

| 用 TensorFlow Lite 在安卓系统上实现即时人体姿态跟踪

| Facebook等联合推出语言理解基准SuperGLUE,为模型提供更困难的挑战

| 机器学习模拟数字动物以测试药物,减轻动物痛苦并加速药物开发进程

0bb4d1b7829aef5adae41467f8c5e751.gif

专治BUG据说在看的没有BUG
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值