Falling back to builtin cartesian if it is not available from sklearn