gpt4 book ai didi

python - 有没有办法检查数据框中的线性相关列?

转载 作者:太空狗 更新时间:2023-10-30 01:12:11 24 4
gpt4 key购买 nike

有没有办法检查 pandas 数据框中列的线性依赖关系?例如:

columns = ['A','B', 'C']
df = pd.DataFrame(columns=columns)
df.A = [0,2,3,4]
df.B = df.A*2
df.C = [8,3,5,4]
print(df)

A B C
0 0 0 8
1 2 4 3
2 3 6 5
3 4 8 4

有没有办法表明 B 列是 A 的线性组合,但 C 是独立列?我的最终目标是在数据集上运行泊松回归,但我不断收到 LinAlgError: Singular matrix 错误,这意味着我的数据框不存在逆,因此它包含依赖列。

我想提出一种编程方式来检查每个功能并确保没有依赖列。

最佳答案

如果你有 SymPy 你可以使用 "reduced row echelon form"通过 sympy.matrix.rref :

>>> import sympy 
>>> reduced_form, inds = sympy.Matrix(df.values).rref()
>>> reduced_form
Matrix([
[1.0, 2.0, 0],
[ 0, 0, 1.0],
[ 0, 0, 0],
[ 0, 0, 0]])

>>> inds
[0, 2]

枢轴列(存储为 inds)表示线性无关的“列编号”,您可以简单地“切掉”其他列:

>>> df.iloc[:, inds]
A C
0 0 8
1 2 3
2 3 5
3 4 4

关于python - 有没有办法检查数据框中的线性相关列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44555763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com