分类模型可视化
类别预测误差(Class Prediction Error)
ClassPredictionError
图将拟合分类模型中每个类的支持度(训练样本数),并显示为堆叠条形图。 每个条形都被分段以显示每个类别的预测比例(包括假阴性和假阳性,如混淆矩阵)。
您可以使用 ClassPredictionError
来可视化您的分类器遇到特别困难的类别,
更重要的是,它在每个类的基础上给出了哪些不正确的答案。 这通常可以让您更好地了解不同模型的优缺点以及数据集特有的特定挑战。
类别预测误差图提供了一种方法来快速了解分类器在预测正确类别方面的效果。
from yellowbrick.datasets import load_game from sklearn.preprocessing import OneHotEncoder from sklearn.ensemble import RandomForestClassifier from yellowbrick.classifier import class_prediction_error X, y = load_game() X = OneHotEncoder().fit_transform(X) visualizer = class_prediction_error( RandomForestClassifier(n_estimators=10), X, y ) 复制代码
分类报告(Classification Report)
分类报告可视化器显示模型的准确率、召回率、F1分数。 为了更容易的解释和问题检测,该报告将数字分数与颜色编码的热图相结合。 所有热图都在 (0.0, 1.0)
范围内,以便于在不同分类报告之间轻松比较分类模型。
from yellowbrick.datasets import load_credit from sklearn.ensemble import RandomForestClassifier from yellowbrick.classifier import classification_report X, y = load_credit() visualizer = classification_report( RandomForestClassifier(n_estimators=10), X, y ) 复制代码
ConfusionMatrix 可视化器是一个 ScoreVisualizer,它使用拟合的 scikit-learn 分类器和一组测试 X 和 y 值,然后返回一个报告,显示每个测试值预测的类别与其实际类别的比较情况。
数据科学家使用混淆矩阵来了解哪些类最容易混淆。
from yellowbrick.datasets import load_game from sklearn.preprocessing import OneHotEncoder from sklearn.linear_model import RidgeClassifier from yellowbrick.classifier import confusion_matrix X, y = load_game() X = OneHotEncoder().fit_transform(X) visualizer = confusion_matrix(RidgeClassifier(), X, y, cmap="Greens") 复制代码
精确率/召回率曲线(Precision/Recall)
PrecisionRecallCurve 显示了分类器精度(结果相关性的度量)和召回率(完整性的度量)之间的权衡。
对于每个类别,精度定义为真阳性与真假阳性总和的比率,召回率是真阳性与真阳性和假阴性总和的比率。
from sklearn.naive_bayes import GaussianNB from yellowbrick.datasets import load_occupancy from yellowbrick.classifier import precision_recall_curve X, y = load_occupancy() visualizer = precision_recall_curve(GaussianNB(), X, y) 复制代码
ROC/AUC
ROC/AUC图是用户可视化分类器的灵敏度和特异性之间的权衡。
ROC是分类器预测质量的度量,它比较可视化模型的灵敏度和特异性之间的权衡。绘制时,ROC 曲线在 Y 轴上显示真阳性率,在 X 轴上显示每个类别的假阳性率。因此,理想点是图的左上角:假阳性为零,真阳性为 1。
另一个度量,即曲线下面积 (AUC),它是对假阳性和真阳性之间关系的计算。 AUC 越高,模型通常越好。然而,检查曲线的“陡度”也很重要,因为这描述了真阳性率的最大化,同时,假阳性率的最小化。
from yellowbrick.classifier import roc_auc from yellowbrick.datasets import load_spam from sklearn.linear_model import LogisticRegression X, y = load_spam() visualizer = roc_auc(LogisticRegression(), X, y) 复制代码
精度、召回率、f1 分数等指标是对二元分类器的判别阈值的可视化。
判别阈值是选择正类而不是负类的概率或分数。 通常,这设置为 50%,但可以调整阈值以增加或减少对误报或其他应用程序因素的敏感度。
from yellowbrick.classifier import discrimination_threshold from sklearn.linear_model import LogisticRegression from yellowbrick.datasets import load_spam X, y = load_spam() visualizer = discrimination_threshold( LogisticRegression(multi_class="auto", solver="liblinear"), X, y ) 复制代码
残差图(Residuals Plot)
在回归模型的上下文中,残差是目标变量的观测值 (y) 与预测值 (ŷ) 之间的差异,即预测的误差。
残差图显示了纵轴上的残差和横轴上的因变量之间的差异,使您可以检测目标内可能容易受到或多或少误差影响的区域。
from sklearn.linear_model import Ridge from yellowbrick.datasets import load_concrete from yellowbrick.regressor import residuals_plot X, y = load_concrete() visualizer = residuals_plot( Ridge(), X, y, train_color="maroon", test_color="gold" ) 复制代码