|
8 | 8 | importnumpyasnp |
9 | 9 | fromsklearn.datasetsimportload_svmlight_file |
10 | 10 | fromsklearn.cross_validationimportKFold |
11 | | -fromsklearn.linear_modelimportElasticNetCV |
| 11 | +fromsklearn.linear_modelimportElasticNetCV, ElasticNet |
12 | 12 | fromsklearn.metricsimportmean_squared_error, r2_score |
| 13 | +frommatplotlibimportpyplotasplt |
13 | 14 |
|
14 | 15 | data, target=load_svmlight_file('data/E2006.train') |
15 | 16 |
|
16 | 17 | # Edit the lines below if you want to switch method: |
17 | | -# met = LinearRegression(fit_intercept=True) |
18 | | -met=ElasticNetCV() |
| 18 | +# from sklearn.linear_model import Lasso |
| 19 | +# met = Lasso(alpha=0.1) |
| 20 | +met=ElasticNet(alpha=0.1) |
19 | 21 |
|
20 | 22 | kf=KFold(len(target), n_folds=5) |
21 | 23 | pred=np.zeros_like(target) |
|
27 | 29 | print('[EN 0.1] R2 on testing (5 fold),{:.2}'.format(r2_score(target, pred))) |
28 | 30 | print('') |
29 | 31 |
|
| 32 | +# Construct an ElasticNetCV object (use all available CPUs) |
| 33 | +met=ElasticNetCV(n_jobs=-1) |
| 34 | + |
| 35 | +kf=KFold(len(target), n_folds=5) |
| 36 | +pred=np.zeros_like(target) |
| 37 | +fortrain, testinkf: |
| 38 | +met.fit(data[train], target[train]) |
| 39 | +pred[test] =met.predict(data[test]) |
| 40 | + |
| 41 | +print('[EN CV] RMSE on testing (5 fold),{:.2}'.format(np.sqrt(mean_squared_error(target, pred)))) |
| 42 | +print('[EN CV] R2 on testing (5 fold),{:.2}'.format(r2_score(target, pred))) |
| 43 | +print('') |
| 44 | + |
30 | 45 | met.fit(data, target) |
31 | 46 | pred=met.predict(data) |
32 | | -print('[EN 0.1] RMSE on training,{:.2}'.format(np.sqrt(mean_squared_error(target, pred)))) |
33 | | -print('[EN 0.1] R2 on training,{:.2}'.format(r2_score(target, pred))) |
| 47 | +print('[EN CV] RMSE on training,{:.2}'.format(np.sqrt(mean_squared_error(target, pred)))) |
| 48 | +print('[EN CV] R2 on training,{:.2}'.format(r2_score(target, pred))) |
| 49 | + |
| 50 | + |
| 51 | +# Construct an ElasticNetCV object (use all available CPUs) |
| 52 | +met=ElasticNetCV(n_jobs=-1, l1_ratio=[.01, .05, .25, .5, .75, .95, .99]) |
| 53 | + |
| 54 | +kf=KFold(len(target), n_folds=5) |
| 55 | +pred=np.zeros_like(target) |
| 56 | +fortrain, testinkf: |
| 57 | +met.fit(data[train], target[train]) |
| 58 | +pred[test] =met.predict(data[test]) |
| 59 | + |
| 60 | + |
| 61 | +print('[EN CV l1_ratio] RMSE on testing (5 fold),{:.2}'.format(np.sqrt(mean_squared_error(target, pred)))) |
| 62 | +print('[EN CV l1_ratio] R2 on testing (5 fold),{:.2}'.format(r2_score(target, pred))) |
| 63 | +print('') |
34 | 64 |
|
35 | 65 |
|
| 66 | +fig, ax=plt.subplots() |
| 67 | +y=target |
| 68 | +ax.scatter(y, pred, c='k') |
| 69 | +ax.plot([-5,-1], [-5,-1], 'r-', lw=2) |
| 70 | +ax.set_xlabel('Actual value') |
| 71 | +ax.set_ylabel('Predicted value') |
| 72 | +fig.savefig('Figure_10k_scatter_EN_l1_ratio.png', dpi=150) |
0 commit comments