sklearn线性回归中.rank_与.singular_属性的含义是什么?
scikit-learn 线性回归
.rank_ 与 .singular_ 属性详解 LinearRegression默认采用奇异值分解(SVD)求解最小二乘参数,.rank_和.singular_都是SVD计算过程中从训练特征矩阵得到的固有属性,仅在调用fit()完成模型训练后可访问。
.rank_ 含义
- 取值为训练特征矩阵$X$的秩,即特征矩阵列向量张成的线性空间的维度。
- 示例中返回值为13,说明训练用的特征集合不存在完全线性相关的冗余特征:如果存在完全共线的特征(例如某列是另一列的常数倍、某列等于其余若干列的线性组合),秩会小于输入的特征总列数。
.singular_ 含义
- 数组存储的是特征矩阵$X$经奇异值分解得到的所有非零奇异值,默认按数值从大到小降序排列。
- 示例中数组长度恰好为13,与
.rank_的取值一一对应,这是SVD的基本性质:矩阵非零奇异值的个数等于矩阵的秩。 - 奇异值的大小对应数据在各个正交投影方向上的方差:数值越大,该方向承载的数据信息越多;如果存在数值极接近0的奇异值,说明特征存在较强的多重共线性,此时线性回归求解出的系数方差会很高,稳定性差。
示例运行结果:
>>> from sklearn.linear_model import LinearRegression >>> model.rank_ 13 >>> model.singular_ array([3.54353952e+03, 1.57609582e+03, 5.69911549e+02, 3.26708222e+02, 1.41541547e+02, 1.05019683e+02, 7.89006614e+01, 6.08655030e+01, 3.64069654e+01, 2.13508221e+01, 1.03249311e+01, 4.64668118e+00, 1.12979776e+00])
相关数学概念学习参考
- 矩阵的秩:参考线性代数教材中线性相关、线性空间维度相关章节,核心是判断向量组的最大线性无关组规模
- 奇异值分解(SVD):参考线性代数教材中矩阵分解相关章节,核心是掌握任意矩阵分解为正交矩阵、奇异值对角矩阵、正交矩阵乘积的逻辑与几何意义
- 最小二乘SVD解法:参考数值线性代数、统计学习教材中线性模型求解相关章节,理解该方法相比直接矩阵求逆的数值稳定性优势
内容的提问来源于stack exchange,提问作者Armando Bridena
相关产品推荐
相关产品推荐

