def non_negative_garotte(X, y, alpha, tol=<NUM_LIT>):
coef_ols = LinearRegression(fit_intercept=False).fit(X, y).coef_<EOL>X = X * coef_ols[np.newaxis, :]<EOL>shrink_coef = Lasso(alpha=alpha, fit_intercept=False,<EOL>positive=True, normalize=False,<EOL>tol=tol).fit(X, y).coef_<EOL>coef = coef_ols * shrink_coef<EOL>rss = np.sum((y - np.dot(X, coef)) ** <NUM_LIT:2>)<EOL>return coef, shrink_coef, rss<EOL>
:param X:
:param y:
:param alpha:
:param tol:
:return: