Numpy.linalg.inv或Numpy.linalg.solve类型错误

时间:2017-04-12 00:20:42

标签: python numpy

我试图通过尝试实现$$(X ^ {T} X)^ { - 1} X ^ {T} y $$

来反过来

但是,这样做时,我收到以下错误:TypeError: No loop matching the specified signature and casting was found for ufunc inv

我的代码如下:

import pandas as pd
import numpy as np
from numpy.linalg import inv


data = pd.read_csv("Tbill10yr.csv")
X = data.as_matrix()[:,1]
X1 = X[:730]
y_1 = X[1:,].reshape((730,1))
Nobs = y_1.shape[0]
X1 = np.c_[ np.ones( (Nobs,1) ) , X1]
XX = np.dot(X1.T , X1)
Xy = np.dot(X1.T , y_1)

beta_hat = np.dot(inv(XX),Xy)

我后来发现我必须使用beta_hat = np.dot(inv(XX.dtype(float)),Xy)

为什么有必要这样做?有没有正确的方法来解决这个问题?

任何解释都非常适用。

由于

1 个答案:

答案 0 :(得分:0)

一个可能的原因可能是您的数据未被识别为float。来自data.as_matrix documentation

  

dtype将是一个较低的共同分母dtype(隐含的   向上转型);也就是说,如果dtypes(甚至数字类型)是   混合,将容纳所有容纳的人。使用它   如果你不处理这些街区,请小心。

您可以通过执行XX.dtype来检查数组的类型。