我一直在处理Python中A= Bx形式的线性代数问题,并将其与MATLAB和Mathematica中的同事代码进行了比较。当B是一个奇异矩阵时,我们注意到Python和其他的区别。当使用numpy.linalg.solve()时,我抛出一个奇异矩阵错误,因此我实现了.pinv() ( Moore Penrose伪逆)。
我知道存储逆在计算上效率很低,首先我很好奇是否有更好的方法来处理Python中的奇异矩阵。然而,我问题的重点在于Python如何从无穷大的解空间中选择一个答案,以及为什么它选择一个与MATLAB和Mathematica不同的答案。
这是我的玩具问题:
B = np.array
我必须反演一个大型稀疏矩阵(50000 X 12000)。它最初以numpy.ndarray的形式存储,矩阵的大小约为3.5GB。我已经尝试过使用numpy.linalg.pinv来转换这个矩阵,但是它崩溃了jupyter笔记本内核。将此numpy.ndarray转换为scipy.sparse.csr_matrix (稀疏矩阵格式)是可行的,但我不知道有任何函数可以计算csr_matrix的伪逆。
如何求大型稀疏矩阵的伪逆?
我正在尝试弄清楚statsmodels.sm.api是如何计算标准误差的:
import pandas as pd
import statsmodels.api as sm
import numpy as np
data = pd.read_csv("Advertising.csv", index_col=0)
X = sm.add_constant(data[['TV', 'radio' ,'newspaper']])
y = data["sales"]
model = sm.OLS(y, X).fit()
y
对于这个实验,我需要使用均值0和标准差10从正态分布中抽取150个x值,然后从x值中使用特征{1,x,x^2}构建设计矩阵。
我们必须对参数进行采样,然后使用设计矩阵为回归数据创建y值。
问题是我的设计矩阵不是方阵,而Moore-Penrose Penrose逆需要方阵,但我不知道如何让它工作,考虑到实验室的早期设置?
这就是我所做的
#Linear Regression Lab
import numpy as np
import math
data = np.random.normal(0, 10, 150)
design_matrix = np.zeros((150,3))
for i
我正在尝试创建一个基于1年数据的最小方差投资组合。然后,我希望每月重新平衡投资组合,从而重新计算协方差矩阵。(我的数据集从1992年开始,2017年结束)。
我做了下面的代码,当它不在循环中时,它可以工作。但是当放入循环中时,协方差矩阵的逆矩阵是奇异的。我不明白为什么会出现这个问题,因为我在循环结束时重置了每个变量。
### Importing the necessary libraries ###
import pandas as pd
import numpy as np
from numpy.linalg import inv
### Importing the dataset ###
我尝试在虹膜数据集上使用线性回归模型。
from sklearn import datasets
import seaborn as sns
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
from sklearn.linear_model import LinearRegression
# load iris data
train = sns.load_dataset('iris')
train
# one-hot-encoding
specie
我正在尝试获得一个scipy稀疏矩阵的条件数。到目前为止,我设法做到这一点的方法是将矩阵转换为密集的,然后获得其特征值:
$ python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> f