According to the GPS specs, the GPS position accuracy for civilian receivers is 7.5m at a 95% confidence interval. See here and here for a few notes on this.
To get better than this, you’re going to have to either combine your GPS info with some external position info (aka AGPS or DGPS), or do some time/space averaging of your GPS lat/lon/alt values yourself - and probably looking at the position uncertainty info to weight each ‘fix’.
It’s a common misconception that GPS receivers will give you ‘accurate’ positioning on their own. If your receiver is stationary and you plot your fixes over time, you’ll see that you get a little ‘cloud’ of points, not all on top of one another.