def compute_bench(samples_range, features_range): it = 0 results = defaultdict(lambda: []) max_it = len(samples_range) * len(features_range) for n_samples in samples_range: for n_features in features_range: it += 1 print '====================' print 'Iteration %03d of %03d' % (it, max_it) print '====================' dataset_kwargs = { 'n_train_samples': n_samples, 'n_test_samples': 2, 'n_features': n_features, 'n_informative': n_features / 10, 'effective_rank': min(n_samples, n_features) / 10, #'effective_rank': None, 'bias': 0.0, } print "n_samples: %d" % n_samples print "n_features: %d" % n_features X, y, _, _, _ = make_regression_dataset(**dataset_kwargs) gc.collect() print "benching lars_path (with Gram):", sys.stdout.flush() tstart = time() G = np.dot(X.T, X) # precomputed Gram matrix Xy = np.dot(X.T, y) lars_path(X, y, Xy=Xy, Gram=G, method='lasso') delta = time() - tstart print "%0.3fs" % delta results['lars_path (with Gram)'].append(delta) gc.collect() print "benching lars_path (without Gram):", sys.stdout.flush() tstart = time() lars_path(X, y, method='lasso') delta = time() - tstart print "%0.3fs" % delta results['lars_path (without Gram)'].append(delta) gc.collect() print "benching lasso_path (with Gram):", sys.stdout.flush() tstart = time() lasso_path(X, y, precompute=True) delta = time() - tstart print "%0.3fs" % delta results['lasso_path (with Gram)'].append(delta) gc.collect() print "benching lasso_path (without Gram):", sys.stdout.flush() tstart = time() lasso_path(X, y, precompute=False) delta = time() - tstart print "%0.3fs" % delta results['lasso_path (without Gram)'].append(delta) return results
from scikits.learn.linear_model import lasso_path, enet_path from scikits.learn import datasets diabetes = datasets.load_diabetes() X = diabetes.data y = diabetes.target X /= X.std(0) # Standardize data (easier to set the rho parameter) ################################################################################ # Compute paths eps = 5e-3 # the smaller it is the longer is the path print "Computing regularization path using the lasso..." models = lasso_path(X, y, eps=eps) alphas_lasso = np.array([model.alpha for model in models]) coefs_lasso = np.array([model.coef_ for model in models]) print "Computing regularization path using the elastic net..." models = enet_path(X, y, eps=eps, rho=0.8) alphas_enet = np.array([model.alpha for model in models]) coefs_enet = np.array([model.coef_ for model in models]) ################################################################################ # Display results ax = pl.gca() ax.set_color_cycle(2 * ['b', 'r', 'g', 'c', 'k']) l1 = pl.plot(coefs_lasso) l2 = pl.plot(coefs_enet, linestyle='--')