对于这个实验室,我需要从正态分布中抽取150个x值,平均值为0,标准偏差为10,然后从x值中使用特征{1,x,x^2}构造一个设计矩阵
我们必须对参数进行采样,然后使用设计矩阵为回归数据创建y值
问题是我的设计矩阵不是正方形的,Moore Penrose Pseduoinverse需要正方形矩阵,但考虑到实验室的早期设置,我不知道如何使其工作
这就是我所做的
#Linear Regression Lab
import numpy as np
import math
data = np.random.normal(0, 10, 150)
design_matrix = np.zeros((150,3))
for i in range(150):
design_matrix[i][0] = 1
design_matrix[i][1] = data[i]
design_matrix[i][2] = pow(data[i], 2)
print("-------------------Design Matrix---------------------")
print("|--------1--------|-------x-------|--------x^2--------|")
print(design_matrix[:20])
#sampling paramters
theta_0 = np.random.uniform(low = -30, high = 20)
theta_1 = np.random.uniform(low = -30, high = 20)
theta_2 = np.random.uniform(low = -30, high = 20)
print(theta_0, theta_1, theta_2)
theta = np.array([theta_0, theta_1, theta_2])
theta = np.transpose(theta)
#moore penrose psuedo inverse
MPpi = np.linalg.pinv(design_matrix) ##problem here
y_values = np.linalg.inv(MPpi)
请随意编辑此不完整的答案
在Repl上运行此代码后,我收到以下错误消息
第一个错误从
MPpi
的倒数传播通过查看文档,似乎
pinv
切换了最后两个维度[例如,一个m
xn
矩阵变成了n
xm
],因此我们需要在计算伪逆之前格式化矩阵就Moore-Penrose逆AKA
pinv
而言,this article建议乘以MPpi*data
,这将产生Ross MacAusland}的x_0{符号,这最适合于最小二乘回归相关问题 更多 >
编程相关推荐