Resolver 20 433 ecuaciones que no tienen solución
Predecir el valor de la vivienda a partir de características del distrito, con datos reales del censo de 1990.
d = housing.dropna() # quedan 20433 filas
X = np.column_stack([np.ones(len(d)), d[feats].to_numpy(float)]) # (20433, 7)
w = np.linalg.pinv(X) @ y
w_lstsq, *_ = np.linalg.lstsq(X, y, rcond=None)
np.allclose(w, w_lstsq) # True
rmse = np.sqrt(((X @ w - y) ** 2).mean()) # ≈ 75 980
X es 20 433 × 7: muy alta, así que ni siquiera se puede llamar np.linalg.inv. No hay solución exacta: ninguna recta pasa por 20 433 puntos. La pseudoinversa da en cambio la mejor respuesta posible, y lstsq coincide exactamente porque resuelve el mismo problema.