У меня есть матрица дизайна X с r строками и c столбцами, и я хочу добавить новую строку, в которой все ее записи равны 1 (строка перехвата) для обучающей модели.
def fit_linear_regression(X, y):
ones = np.ones(X.shape[1])
K = np.insert(X.T, 0, ones, axis=1)
K = K.T
singulars = np.linalg.svd(K, compute_uv=False)
w = np.linalg.pinv(K.transpose()) @ y
return singulars, w
Проблема в том, что когда я добавляю нужную строку за пределы функции fit_linear_regression, то есть когда я предварительно обрабатываю данные и затем отправляю матрицу в качестве аргумента после добавления строки 1, все работает отлично, но когда я пытаюсь добавить В строке из функции я, кажется, столкнулся со следующей проблемой:
ValueError: matmul: входной операнд 1 имеет несоответствие в своем основном измерении 0, с> gufun c signature (n ?, k), (k, m?) -> (n?, m?) (размер 18 отличается от 17)
Я не могу точно определить, где проблема .. . y - это вектор ответа из 162 строк, а XT - это транспонирование 162x18 (ранее 17), поэтому, когда я пытаюсь их умножить, все должно работать нормально.
Обновлено: это формы X и у сразу после входа в функцию:
X.shape[0] = 17, X.shape[1] = 162
y.shape[1] = 162
Добавление строки перехвата должно изменить X.shape [0] на 18, и это так, но тогда возникает эта ошибка. Я мог бы добавить фактические данные X и y, но я нахожу их запутанными и бесполезными ...