What's the point of the axis parameter? Can't the user just use fit(X.T) and transform(X.T)?