Yellowbrick简介
Yellowbrick是一款用于促进机器学习模型选择的可视化分析和诊断工具。它在scikit-learn的api基础上做了扩展,能让我们更容易的驾驭模型优化阶段。简而言之,yellowbrick将scikit-learn和matplotlib有机结合起来,通过可视化方式帮助我们优化模型。
安装
pip install -U yellowbrick 复制代码
虽然Yellowbrick提供了颜色、大小和标题等参数来帮助你自定义绘图。 但是,有时您只想用一行代码绘制一个图形。Yellowbrick提供了许多一行代码即可可视化的工具。
下面将展示一些流行的用于特征分析、分类、回归、聚类和目标评估的可视化工具。
特征分析可视化
Rank1D/Rank2D
默认情况下,Rank1D使用Shapiro-Wilk算法来评估特征分布的正态性。然后绘制条形图,显示每个特征的相对等级。
Shapiro-Wilk算法从统计学意义上将样本分布与正态分布进行比较,以确定数据是否显示出与正态性的偏离或符合。
from yellowbrick.features import rank1d from yellowbrick.datasets import load_energy X, _ = load_energy() visualizer = rank1d(X, color="r") 复制代码
默认情况下,Rank2D可视化工具使用皮尔逊相关系数检测两个特征之间的相关性。
from yellowbrick.features import rank2d from yellowbrick.datasets import load_credit X, _ = load_credit() print(X[['limit','sex', 'edu']].head()) visualizer = rank2d(X) 复制代码
平行坐标(Parallel Coordinates)
平行坐标是多维特征可视化技术,其中垂直轴(Y轴)为每个特征的值,Y轴表示特征。折线的颜色表示目标值。这允许一次性可视化多个维度;事实上,给定无限的水平空间(例如滚动窗口),技术上可以显示无限数量的维度!
from sklearn.datasets import load_wine from yellowbrick.features import parallel_coordinates X, y = load_wine(return_X_y=True) print(X.shape,y.shape) #(178, 13) (178,) visualizer = parallel_coordinates(X, y, normalize="standard") 复制代码
径向坐标可视化(Radial Visualization)
RadViz 是一种多元数据可视化算法,它围绕圆的圆周均匀地绘制每个特征维度,然后在圆的内部绘制点,以便该点在从中心到每个弧的轴上对其值进行归一化。 这种机制允许尽可能多的维度可以很容易地放在一个圆上,大大扩展了可视化的维度。
数据科学家使用这种方法来检测类之间的可分离性。例如 是否有机会从特征集中学习,还是噪音太大?
如果您的数据包含具有缺失值的行 (numpy.nan
),则不会绘制这些缺失值。 换句话说,您可能无法获得数据的全貌。 RadViz 将发出 DataWarning
警告,告诉您丢失的百分比。
如果您收到此警告,则可能需要查看插补策略。 具体如何填充缺失值请参考:scikit-learn Imputer。
from yellowbrick.features import radviz from yellowbrick.datasets import load_occupancy X, y = load_occupancy() visualizer = radviz(X, y, colors=["maroon", "gold"]) 复制代码
PCA
PCA 分解可视化器利用主成分分析将高维数据分解为两个或三个维度,以便可以将每个实例绘制在散点图中。 PCA 的使用意味着这些投影的数据集
可以沿着主要变化的轴进行分析,并且可以被解释,以确定是否可以利用球面距离度量。
from yellowbrick.datasets import load_spam from yellowbrick.features import pca_decomposition X, y = load_spam() print(X.shape,y.shape) # (4600, 57) (4600,) visualizer = pca_decomposition(X, y) 复制代码
流形(Manifold)
流形可视化工具使用流形学习将多维度描述的实例嵌入到2维,提供高维可视化。从而允许创建散点图来显示数据中的潜在结构。
与 PCA 和 SVD 等分解方法不同,流形通常使用最近邻方法进行嵌入,允许他们捕获会丢失的非线性结构。然后可以分析生成的投影的噪声或可分离性,以确定是否可以在数据中创建决策空间。
from sklearn.datasets import load_iris from yellowbrick.features import manifold_embedding X, y = load_iris(return_X_y=True) visualizer = manifold_embedding(X, y) 复制代码