I would use `penalty='elasticnet'` instead of `penalty='l1'` as I found in practice that `l1` is often degrading the predictive accuracy to much to be useful when compared to `'elasticnet'` or `l2`.

Also please add `l1_ratio=0.25` here and explain in a paragraph after that the parameter `l1_ratio` can be tuned to adjust the tradeoff between compactness and accuracy (in combination with the total regularization strength `alpha`).