资源技术动态Scikit-Learn 模型可视化教程

Scikit-Learn 模型可视化教程

2020-03-26 | |  126 |   0

原标题: Scikit-Learn 模型可视化教程

来源:AI研习社   链接:https://www.yanxishe.com/TextTranslation/2464


介绍

在这个报告中,作者展示如何用几行代码可视化scikit学习模型的性能。还探讨这些图像如何帮助我们更好地理解我们的模型。创建这些图很简单。

步骤1:导入wandb并初始化新的运行。

import wandb
wandb.init(project="visualize-sklearn")

第二步:将各个图可视化。

# Visualize single plotwandb.sklearn.plot_confusion_matrix(y_true, y_probas, labels)

或一次可视化所有图:

# Visualize all classifier plotswandb.sklearn.plot_classifier(clf, X_train, X_test, y_train, y_test, y_pred, y_probas, labels,                                                         model_name='SVC', feature_names=None)# All regression plotswandb.sklearn.plot_regressor(reg, X_train, X_test, y_train, y_test,  model_name='Ridge')# All clustering plotswandb.sklearn.plot_clusterer(kmeans, X_train, cluster_labels, labels=None, model_name='KMeans')


举个例子→

分类

数据集

在这份报告中,我在泰坦尼克号数据集上训练了几个模型,这些数据集描述了泰坦尼克号上的乘客。我们的目标是预测乘客是否幸存。

学习曲线

01.png

在不同长度的数据集上训练模型,并为训练集和测试集生成交叉验证分数与数据集大小的关系图。

在这里我们可以观察到我们的模型是过拟合的。虽然它在击球后的训练中表现良好,但测试精度逐渐提高,但从未达到与训练精度相当的水平。

示例wandb.sklearn.plot_learning_curve(model,X,y)

  • 模型(clf或reg):采用拟合回归或分类器。

  • X(arr):数据集特性。

  • y(arr):数据集标签。

ROC曲线

02.png

  ROC曲线显示真阳性率(y轴)与假阳性率(x轴)。理想的分数是TPR=1和FPR=0,这是左上角的分数。通常我们计算ROC曲线下的面积(AUC-ROC),AUC-ROC越大越好。


在这里,我们可以看到我们的模型在预测类存活方面稍微好一些,AUC-ROC更大就证明了这一点。

示例wandb.sklearn.plot_roc(y_true,y_probas,labels)

  • y_true(arr):测试集标签。

  • y_probas(arr):测试集预测概率。

  • labels(list):目标变量的命名标签(y)。

阶级比例

03.png

  绘制训练和测试集中目标类的分布。有助于检测不平衡类并确保一个类不会对模型产生不成比例的影响。

在这里,我们可以看到更多的乘客谁没有生存的例子比那些谁幸存。训练和测试集似乎共享了目标类的分布,这对于推广我们的模型输出是个好消息。

示例wandb.sklearn.plot_class_比例(y_train,y_test,['dog','cat','owl'])

  • y _train(arr):训练集标签。

  • y_test(arr):测试集标签。

  • 标签(列表):目标变量的命名标签(y)。

精确召回曲线

04.png

  计算不同阈值的精确性和召回之间的折衷。曲线下的高区域表示高召回率和高精度,其中高精度表示低误报率,高召回表示低误报率。


两者的高分都表明分类器返回的是准确的结果(高精度),同时返回的也是大部分的阳性结果(高召回率)。当类非常不平衡时,PR曲线非常有用。

示例wandb.sklearn.plot_precision_recall(y_true,y_probas,labels)

  • y_true(arr):测试集标签。

  • y_probas(arr):测试集预测概率。

  • labels(list):目标变量的命名标签(y)。

特征重要性

05.png

  评估和绘制分类任务中每个特征的重要性。仅适用于具有feature_importances_u属性的分类器,如树。


在这里我们可以看到这个头衔(小姐,太太,先生,主人)是谁幸存下来的高度象征。这是有道理的,因为头衔同时反映了乘客的性别、年龄和社会地位。很奇怪的是,name_length_是第二个最具预测性的特性,深入探究为什么会出现这种情况可能很有趣。

示例wandb.sklearn.plot_feature_importances(model,['width',height',length'])

  • 模型(clf):接受一个合适的分类器。

  • 特征名称(列表):要素的名称。通过用相应的名称替换要素索引,使绘图更易于读取。

校准曲线

06.png

  绘制分类器预测概率的校准程度以及如何校准未校准的分类器。比较基线logistic回归模型(该模型作为参数传递)和其等张校正和乙状结肠校正估计的预测概率。


校准曲线越接近对角线越好。转置的乙状结肠曲线表示分类器过度拟合,而乙状结肠曲线表示分类器欠拟合。通过训练模型的等张和乙状结肠校准,并比较它们的曲线,我们可以判断模型是否过拟合或欠拟合,如果是这样,哪种校准(乙状结肠或等张)可能有助于解决这个问题。

有关更多详细信息,请查看sklearn的文档

在这种情况下,我们可以看到vanilla AdaBoost遭受过度拟合(如转置的乙状结肠曲线所证明),可能是因为冗余特征(如标题)违反了特征独立性假设。使用乙状结肠校准校准AdaBoost似乎是最有效的解决这一过度拟合。

示例wandb.sklearn.plot_calibration_curve(clf,X,y,'RandomForestClassifier')

  • model(clf):接受一个合适的分类器。

  • X(arr):训练集特征。

  • y(arr):训练集标签。

  • model_name(str):模型名称。默认为“分类器”

混淆矩阵

07.png

  计算混淆矩阵以评估分类的准确性。这对于评估模型预测的质量和发现模型出错的预测模式很有用。


对角线表示模型正确得到的预测,即实际标签等于预测标签。

示例wandb.sklearn.plot_confusion_matrix(y_true,y_probas,labels)

  • y_true(arr):测试集标签。

  • y_probas(arr):测试集预测概率。

  • labels(list):目标变量的命名标签(y)。

汇总指标

08.png

  计算回归和分类算法的汇总指标(如分类的f1、准确性、精度和召回率以及回归的mse、mae、r2分数)。

示例wandb.sklearn.plot_summary_metrics(model,X_train,X_test,y_train,y_test)

model(clf或reg):采用拟合回归或分类器。
X(arr):训练集特征。
y(arr):训练集标签。
X_test(arr):测试集特性。
y_test(arr):测试集标签。

聚类

肘形图

09.png

测量并绘制方差百分比,解释为聚类数的函数,以及训练时间。有助于选择最佳簇数。

在这里我们可以看到,根据肘部图的最佳簇数是3,这反映了数据集(它有3个类——鸢尾、鸢尾、鸢尾)。
示例wandb.sklearn.plot_elbow_curve(model,X_train)

  • model(clusterer):设置一个clusterer。

  • X(arr):训练集特征。

Silhouette 图

10.png

  测量并绘制一个簇中的每个点与相邻簇中的点之间的距离。簇的厚度与簇的大小相对应。垂直线表示所有点的平均轮廓得分。


接近+1的轮廓系数表明样本远离相邻的簇。值为0表示样本位于或非常接近两个相邻簇之间的决策边界,负值表示这些样本可能分配给了错误的簇。

一般来说,我们希望所有剪影聚类分数都高于平均值(超过红线),并尽可能接近1。我们还喜欢反映数据中底层模式的集群大小。

示例wandb.sklearn.plot_剪影(model,X_train,['spam',not spam'])

  • model(clusterer):设置clusterer。

  • X(arr):训练集特征。

  • cluster_labels(list):群集标签的名称。通过用相应的名称替换群集索引,使绘图更易于读取。

回归

离群值图

11.png

其利用库克距离测量数据点对回归模型的影响。其对异常值检测有用。具有严重偏移影响的实例可能是异常值。

示例 wandb.sklearn.plot_outlier_candidates(model, X, y)

  • model(回归器):接受一个合适的分类器。 

  • X(矩阵):训练集特征。 

  • y(矩阵):训练集标签。

回归

离群值图

12.png

其利用库克距离测量数据点对回归模型的影响。其对异常值检测有用。具有严重偏移影响的实例可能是异常值。

示例 wandb.sklearn.plot_outlier_candidates(model, X, y)

  • model(回归器):接受一个合适的分类器。

  • X(矩阵):训练集特征。 

  • y(矩阵):训练集标签。

残差图

13.png

测量绘图:目标预测值vs预测值与真实值间差值,残差分布。

通常,一个好的拟合模型的残差应该是随机分布的,因为好的模型可以解释数据集中除随机误差以外的大多数现象。 

在这里,我们可以看到我们的模型所产生的大部分误差分布在正负5之间,并且对于训练数据集和测试数据集都是均匀分布的。

示例 wandb.sklearn.plot_residuals(model, X, y)

  • model(模型):接受一个合适的分类器。 

  • X(矩阵):训练集特征。

  • y(矩阵):训练集标签。

举个例子

让我们运行一个完整的例子

 1585199277373382.png

如果你有任何的问题,我们愿意在我们的slack社区回答它们

______________________________________________________

发起:唐里 校对:唐里 审核:鸢尾

参与翻译(3人):邺调、DANNA、泰贝莎•金

英文原文:Visualize Scikit Models

THE END

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:如何理解计算机视觉损失函数?

下一篇:计算机翻译会取代人工翻译吗?

用户评价
全部评价

热门资源

  • 应用笔画宽度变换...

    应用背景:是盲人辅助系统,城市环境中的机器导航...

  • GAN之根据文本描述...

    一些比较好玩的任务也就应运而生,比如图像修复、...

  • 端到端语音识别时...

    从上世纪 50 年代诞生到 2012 年引入 DNN 后识别效...

  • 人体姿态估计的过...

    人体姿态估计是计算机视觉中一个很基础的问题。从...

  • 谷歌发布TyDi QA语...

    为了鼓励对多语言问答技术的研究,谷歌发布了 TyDi...