Для этой лабораторной работы мне нужно выбрать 150 значений x из нормального распределения, используя среднее значение 0 и стандартное отклонение 10, затем из значений x построить матрицу проектирования, используя функции {1, x, x ^ 2 }.
Мы должны сэмплировать параметры и затем использовать матрицу дизайна для создания значений y для данных регрессии.
Проблема в том, что моя матрица дизайна не квадратная, а Мур-Пенроуз 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)