使用 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 数据框的矩阵逆的主要内容,如果未能解决你的问题,请参考以下文章