как sklearn делает линейную регрессию, когда p> n?

Известно, что когда число переменных (p) больше, чем количество выборок (n), метод наименьших квадратов не определяется.

В склеарне я получаю следующие значения:

In [30]: lm = LinearRegression().fit(xx,y_train)

In [31]: lm.coef_
Out[31]: 
array([[ 0.20092363, -0.14378298, -0.33504391, ..., -0.40695124,
         0.08619906, -0.08108713]])

In [32]: xx.shape
Out[32]: (1097, 3419)

Вызов [30] должен вернуть ошибку. Как работает sklearn, когда p> n, как в этом случае?

РЕДАКТИРОВАТЬ: кажется, что матрица заполнена некоторыми значениями

if n > m:
        # need to extend b matrix as it will be filled with
        # a larger solution matrix
        if len(b1.shape) == 2:
            b2 = np.zeros((n, nrhs), dtype=gelss.dtype)
            b2[:m,:] = b1
        else:
            b2 = np.zeros(n, dtype=gelss.dtype)
            b2[:m] = b1
        b1 = b2

Ответы на вопрос(1)

Ваш ответ на вопрос