This is an underestimate for scikit-learn. To get a more accurate estimate, include the ~50 calls to `safe_sparse_dot`, which works around the fact that matrix multiplication is spelled `*` in `scipy.sparse` (and returns an `np.matrix`, which we abhor) and the dozen or so calls to `fast_dot`.