У меня проблемы с пониманием вывода моей функции для реализации множественной регрессии.Я делаю это с нуля в Python для закрытой формы метода.Эта закрытая форма показана ниже:
У меня есть тренировочный набор X
, который 100 rows x 10 columns
, и вектор y
, который 100x1
.
Моя попытка заключается в следующем:
def ridgeRegression(xMatrix, yVector, lambdaRange):
wList = []
for i in range(1, lambdaRange+1):
lambVal = i
# compute the inner values (X.T X + lambda I)
xTranspose = np.transpose(x)
xTx = xTranspose @ x
lamb_I = lambVal * np.eye(xTx.shape[0])
# invert inner, e.g. (inner)**(-1)
inner_matInv = np.linalg.inv(xTx + lamb_I)
# compute outer (X.T y)
outer_xTy = np.dot(xTranspose, y)
# multiply together
w = inner_matInv @ outer_xTy
wList.append(w)
print(wList)
Для тестирования я запускаю его с первыми 5 лямбда-значениями.wList
становится 5 numpy.arrays
каждый длиной 10 (я предполагаю для 10 коэффициентов).
Вот первый из этих 5 массивов:
array([ 0.29686755, 1.48420319, 0.36388528, 0.70324668, -0.51604451,
2.39045735, 1.45295857, 2.21437745, 0.98222546, 0.86124358])
Мой вопрос,и пояснение:
Разве не должно быть 11 коэффициентов (1 для y-точки пересечения + 10 наклонов)?Как мне получить Minimum Square Error
из этого вычисления?Что будет дальше, если я захочу построить эту линию?
Мне кажется, я просто очень озадачен тем, на что я смотрю, так как я все еще работаю над своей линейной алгеброй.
Спасибо!