in svinfer/linear_model/linear_regression.py [0:0]
def estimate_beta(self):
self.omega = self.xtx.copy()
self.omega[np.diag_indices(self.k)] = np.diag(self.omega) - self.x_s2
# check whether omega is positive-definite or not
# reference on threshold https://fburl.com/7y4wyaev
eigenvalues = np.linalg.eigvals(self.omega)
if eigenvalues.max() < 0 or (
eigenvalues.min() < eigenvalues.max() * self.k * np.finfo(np.float_).eps
):
logging.warning("omega is not positive definite")
self.beta = np.linalg.lstsq(self.omega, self.xty, rcond=None)[0]
else:
self.beta = np.linalg.solve(self.omega, self.xty)