yellowbrick的features模块是特征工程诊断器而非画图工具:rank1d用shapiro-wilk检验单特征正态性以判断是否适合线性模型;rank2d通过皮尔逊或斯皮尔曼系数检测特征间冗余;radviz和parallelcoordinates肉眼评估高维类别可分性;pcaprojection验证降维后类别可分性,所有可视化器均需数值型输入且支持pipeline集成。

Yellowbrick 的 features 模块不是“画图工具”,而是面向特征工程决策的诊断器——它不只展示数据长什么样,而是告诉你“这个特征该不该留”“哪几个特征在打架”。
Rank1D:单特征分布是否适合建模?
默认用 Shapiro-Wilk 检验正态性,结果越接近 1(p-value > 0.05),说明该特征分布越接近正态,对线性模型、贝叶斯类模型越友好。
- 非正态特征(如偏态严重、多峰)可能需要 Box-Cox 或分箱处理
-
algorithm='shapiro'是默认值,也可换为'histogram'或'density'查看分布形态 - 注意:分类变量或高基数离散特征会报错,需提前过滤或编码
from yellowbrick.features import Rank1D visualizer = Rank1D(algorithm='shapiro') visualizer.fit(X_numeric) # 只传数值型列 visualizer.poof()
Rank2D:特征之间有没有强相关或冗余?
默认用皮尔逊相关系数(algorithm='pearson'),但对非线性关系不敏感;若怀疑存在单调但非线性关系,应改用 'spearman'。
图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
- 绝对值 > 0.7 的格子建议警惕——可能引发多重共线性,尤其在线性回归中
- 结果图是左下三角矩阵,避免重复解读;对角线是自相关(恒为 1),可忽略
- 若含大量缺失值,
fit()前务必用dropna()或插补,否则会静默失败
from yellowbrick.features import Rank2D visualizer = Rank2D(algorithm='spearman') visualizer.fit(X_numeric) visualizer.poof()
RadViz 和 ParallelCoordinates:高维类别可分性肉眼判断
这两个可视化不输出数值指标,但能快速暴露标签泄露、类别混叠或特征尺度失衡问题。
-
RadViz圆周上每根轴代表一个特征,点越靠近某轴末端,说明该样本该特征值越大;理想情况是不同类别点明显聚在不同扇区 -
ParallelCoordinates中若某条线频繁横跨所有类别区域,说明该特征区分能力弱;若多条线在某轴上高度重合,说明该特征信息量低 - 两者都要求输入已编码的
y(不能是字符串),且X必须是数值型,否则fit()报ValueError: Input contains NaN却不提示具体列
from yellowbrick.features import RadViz visualizer = RadViz(classes=['no', 'yes']) visualizer.fit(X_scaled, y_encoded) visualizer.poof()
PCAProjection:降维后还能不能看清类别边界?
这不是为了“好看”,而是验证原始特征是否携带足够判别信息——如果前两个主成分上类别严重重叠,说明要么特征质量差,要么需要更多维度或非线性变换。
-
proj_features=True会叠加特征向量箭头,箭头越长、夹角越小,说明该特征对主成分贡献越大且方向一致 - 默认保留 95% 方差,但可视化只画前 2 或 3 维;若想看累计方差比,得手动调
PCADecomposition().fit(X).explained_variance_ratio_ - 未标准化的
X会导致 PCA 被量纲大的特征主导,必须先做StandardScaler
真正容易被忽略的是:所有 features 可视化器都继承自 scikit-learn 的 TransformerMixin,意味着它们能直接塞进 Pipeline,但 poof() 只能在 fit 后调用一次——第二次调会空图,且不报错。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










