使用 Pandas 数据框的矩阵逆

Posted

技术标签:

【中文标题】使用 Pandas 数据框的矩阵逆【英文标题】:Matrix inverse with Pandas dataframe 【发布时间】:2017-07-01 18:04:26 【问题描述】:

我正在尝试使用数据框和系列运行以下公式。

设 X 为 3 列的数据框。 (让它成为一个 100x3 矩阵)。 设 y 为向量(100x1 矩阵) X:

    X0  sqrfeet  bedrooms   
0   1     2104         3  
1   1     1600         3  
2   1     2400         3  
3   1     1416         2  
4   1     3000         4 

y:

0 20000
1 15000
2 24000
3 12000
4 14000

我要使用的公式是:- inv(X'*X)*X'*y

这是正规方程的公式。 这里 X' 表示 X 转置,而 inv 表示逆。 我使用的代码是:-

var= (np.linalg.inv((X.T).dot(X)))
var2= var.dot(X.T)
final=var2.dot(Y)

上面说的对吗?

让 X 表示包含房屋大小和卧室数量的房地产数据 而 Y 对应的是价格。

【问题讨论】:

我猜你想做的是OLS回归,看看这个:***.com/questions/19991445/… 我想你这样做是为了学习,但以防万一:Don't invert that matrix。 【参考方案1】:

您似乎想为家庭作业或个人发展推出自己的 OLS 估算器,在这种情况下,您走在正确的轨道上,但请记住以下几点。

Pandas DataFrame 对象有一个方法,as_matrix(),它返回 DataFrame 值的 numpy 矩阵。非数字值将产生 NaN,但您上面的示例应该没问题,因为所有值都是数字。您可以随心所欲地对这些矩阵执行 linalg 操作。

您需要记住的其他一点是回归设计矩阵的方向(本例中的变量X)。设计矩阵是一个 d * n 矩阵,其中 d 是特征数,n 是样本大小。 Y 矩阵是一个 n * 1$ 矩阵。为了使 Normal Equation 中的矩阵乘法起作用,您需要确保它们正确对齐。

如果你需要做很多功能齐全的线性回归,你可能要考虑一个成熟的库,比如StatsModels

【讨论】:

这很有帮助。我尝试使用 StatsModels sm.OLS(Y, X) 运行我的代码,它为截距、系数 1 和 2 提供了几乎相同的值(我称之为 theta0、theta1 和 2)。我正在复习我的机器学习。

以上是关于使用 Pandas 数据框的矩阵逆的主要内容,如果未能解决你的问题,请参考以下文章

自己动手实现广义逆矩阵求解(2022.5.4)

自己动手实现广义逆矩阵求解(2022.5.4)

数据框 Pandas 中所有行的 Pearson 相关性

雅可比矩阵(偏导数矩阵)的逆矩阵代表啥含义

使用 numpy 逆矩阵

MATLAB编程 逆矩阵怎么表示