|
19 | 19 | # Generate some sparse data to play with
|
20 | 20 | np.random.seed(42)
|
21 | 21 |
|
22 |
| -n_samples, n_features = 50, 200 |
| 22 | +n_samples, n_features = 50, 100 |
23 | 23 | X = np.random.randn(n_samples, n_features)
|
24 |
| -coef = 3 * np.random.randn(n_features) |
25 |
| -inds = np.arange(n_features) |
26 |
| -np.random.shuffle(inds) |
27 |
| -coef[inds[10:]] = 0 # sparsify coef |
| 24 | + |
| 25 | +# Decreasing coef w. alternated signs for visualization |
| 26 | +idx = np.arange(n_features) |
| 27 | +coef = (-1) ** idx * np.exp(-idx / 10) |
| 28 | +coef[10:] = 0 # sparsify coef |
28 | 29 | y = np.dot(X, coef)
|
29 | 30 |
|
30 |
| -# add noise |
| 31 | +# Add noise |
31 | 32 | y += 0.01 * np.random.normal(size=n_samples)
|
32 | 33 |
|
33 | 34 | # Split data in train set and test set
|
|
58 | 59 | print(enet)
|
59 | 60 | print("r^2 on test data : %f" % r2_score_enet)
|
60 | 61 |
|
61 |
| -plt.plot(enet.coef_, color='lightgreen', linewidth=2, |
62 |
| - label='Elastic net coefficients') |
63 |
| -plt.plot(lasso.coef_, color='gold', linewidth=2, |
64 |
| - label='Lasso coefficients') |
65 |
| -plt.plot(coef, '--', color='navy', label='original coefficients') |
| 62 | +m, s, _ = plt.stem(np.where(enet.coef_)[0], enet.coef_[enet.coef_ != 0], |
| 63 | + markerfmt='x', label='Elastic net coefficients') |
| 64 | +plt.setp([m, s], color="#2ca02c") |
| 65 | +m, s, _ = plt.stem(np.where(lasso.coef_)[0], lasso.coef_[lasso.coef_ != 0], |
| 66 | + markerfmt='x', label='Lasso coefficients') |
| 67 | +plt.setp([m, s], color='#ff7f0e') |
| 68 | +plt.stem(np.where(coef)[0], coef[coef != 0], label='true coefficients', |
| 69 | + markerfmt='bx') |
| 70 | + |
66 | 71 | plt.legend(loc='best')
|
67 |
| -plt.title("Lasso R^2: %f, Elastic Net R^2: %f" |
| 72 | +plt.title("Lasso $R^2$: %.3f, Elastic Net $R^2$: %.3f" |
68 | 73 | % (r2_score_lasso, r2_score_enet))
|
69 | 74 | plt.show()
|
0 commit comments