作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有没有办法检查 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/
我是一名优秀的程序员,十分优秀!