趋近智
向量空间、线性独立性、基和秩是理解数据集中结构的基本概念,特别是当数据点表示为特征向量时。分析这些向量集有助于找出多余信息,并了解特征空间的实际维度。Python的NumPy库是一个进行数值计算的常用工具,用于执行这些分析。
假设我们有一个小型数据集,其中包含多个数据点,每个数据点由若干特征描述。我们可以将这些特征向量组织成一个矩阵。通常,每行表示一个数据点,每列表示一个特征。然而,当分析特征本身的线性独立性或它们所张成的维度时,将特征向量排列为矩阵的列通常更为方便。我们将采用这种约定来分析特征间的关系。
假设我们有3个数据点,每个点有4个特征。我们可以将特征表示为列向量:
f1=1201,f2=0110,f3=1311,f4=2402
我们可以将这些列向量组合成矩阵A:
A=1201011013112402
让我们使用NumPy创建这个矩阵:
import numpy as np
# 特征向量作为列
A = np.array([
[1, 0, 1, 2],
[2, 1, 3, 4],
[0, 1, 1, 0],
[1, 0, 1, 2]
])
print("特征矩阵A:\n", A)
特征向量间的线性独立性有其意义。如果一组特征向量是线性相关的,这意味着至少一个特征可以表示为其他特征的线性组合。这表明我们的特征中存在冗余。例如,拥有“摄氏温度”和“华氏温度”这两个特征并没有增加任何新的信息,因为一个可以从另一个完美预测;它们是线性相关的(在中心化之后)。冗余特征有时会给机器学习算法带来问题,例如线性回归中的多重共线性,这会导致系数估计不稳定。
A检查矩阵列线性独立性的一种实际方法是计算它的秩。矩阵的秩是矩阵中线性独立列(或行)的最大数量。
NumPy的linalg模块提供了matrix_rank函数来计算矩阵的秩。它通常使用奇异值分解(SVD,我们稍后会介绍)等方法来可靠地确定秩,即使存在小的数值误差。
让我们计算特征矩阵A的秩:
# 计算矩阵A的秩
rank_A = np.linalg.matrix_rank(A)
num_features = A.shape[1] # 列数(特征数)
print(f"矩阵A:\n{A}")
print(f"特征数(列数):{num_features}")
print(f"矩阵A的秩:{rank_A}")
if rank_A < num_features:
print("特征向量(列)是线性相关的。")
else:
print("特征向量(列)是线性独立的。")
执行这段代码将输出:
矩阵A:
[[1 0 1 2]
[2 1 3 4]
[0 1 1 0]
[1 0 1 2]]
特征数(列数):4
矩阵A的秩:2
特征向量(列)是线性相关的。
秩为2,这小于特征数(4)。这证实了我们的推断:特征向量是线性相关的。仔细观察矩阵A,我们可以看到f3=f1+f2 和 f4=2f1。这种冗余意味着特征f3和f4没有在f1和f2中已有的信息上增加任何独特的方向信息。这些特征所张成的维度只有2,这由秩所体现。
现在,让我们考虑另一组我们预期是线性独立的特征向量。
# 另一组特征向量(列)
B = np.array([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1],
[1, 1, 1] # 添加了第四个数据点/维度
])
rank_B = np.linalg.matrix_rank(B)
num_features_B = B.shape[1]
print(f"\n矩阵B:\n{B}")
print(f"特征数(列数):{num_features_B}")
print(f"矩阵B的秩:{rank_B}")
if rank_B < num_features_B:
print("B的特征向量(列)是线性相关的。")
else:
print("B的特征向量(列)是线性独立的。")
这可能会输出:
矩阵B:
[[1 0 0]
[0 1 0]
[0 0 1]
[1 1 1]]
特征数(列数):3
矩阵B的秩:3
B的特征向量(列)是线性独立的。
此处,秩(3)等于特征数(3),表明这些特征向量是线性独立的。这些特征都不能表示为其他特征的线性组合。
为什么进行这种分析?
在本次实践练习中,我们使用了:
np.array():从列表的列表创建矩阵。A.shape[1]:获取列数(在我们设置中指特征数)。np.linalg.matrix_rank():计算矩阵的秩,这是我们检查列间线性独立性的主要工具。通过使用这些工具,你可以将向量空间和线性独立性的抽象知识应用于特征数据集的具体分析,获得有助于机器学习中预处理步骤和模型构建的见解。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造