Wie führt sklearn eine lineare Regression durch, wenn p> n ist?

Es ist bekannt, dass, wenn die Anzahl der Variablen (p) größer als die Anzahl der Stichproben (n) ist, der Schätzer für kleinste Quadrate nicht definiert ist.

In sklearn erhalte ich diese Werte:

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)

Aufruf [30] sollte einen Fehler zurückgeben. Wie funktioniert sklearn, wenn p> n wie in diesem Fall ist?

EDIT: Es scheint, dass die Matrix mit einigen Werten gefüllt ist

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage