Clear[BestCir,gpts,mX,vY,abc];
BestCir[gpts_]:=Module[{mX,vY,abc},mX=Transpose[Append[Transpose[gpts],Array[1&,Length[gpts]]]];
vY=(#[[1]]^2+#[[2]]^2)&/@gpts;
abc=Last[Transpose[RowReduce[Transpose[Append[Transpose[Transpose[mX].mX],Transpose[mX].vY]]]]];
{{abc[[1]]/2,abc[[2]]/2},Sqrt[abc[[3]]+(abc[[1]]/2)^2+(abc[[2]]/2)^2]}]

mypts={{5,2},{-1,5},{3,-2},{3,4.5},{-5/2,3},{1,5},{4,3},{-3,1},{-3/2,4},{1,-3},{-2,-1},{4,-1}};

mypts={{5,2},{-1,5},{3,-2}};

Length[mypts]

cir=N[BestCir[mypts]]

Graphics[{{PointSize[0.015],RGBColor[1,0.5,0],Point[#]&/@mypts},{RGBColor[0,0,0.5],PointSize[0.015],Point[cir[[1]]],Thickness[0.007],Circle[cir[[1]],cir[[2]]]}},GridLines->{Range[-20,20,1/2],Range[-20,20,1/2]},GridLinesStyle->{{GrayLevel[0.75]},{GrayLevel[0.75]}},Axes->True,Ticks->{Range[-7,7],Range[-7,7]},Frame->False,PlotRange->{{-5.75,5.75},{-5.75,5.75}},ImageSize->300]

mypts={{5,2},{-1,5},{3,-2},{3,4.5},{-5/2,3},{1,5},{4,3},{-3,1},{-3/2,4},{1,-3},{-2,-1},{4,-1}};

mypts=((4 {Cos[2 Pi #[[1]]],Sin[2 Pi #[[1]]]}+1/70 {#[[2]],#[[3]]})&/@((RandomReal[#,3])&/@Range[100]));

cir=N[BestCir[mypts]];

Graphics[{{PointSize[0.015],RGBColor[1,0.5,0],Point[#]&/@mypts},{RGBColor[0,0,0.5],PointSize[0.015],Point[cir[[1]]],Thickness[0.007],Circle[cir[[1]],cir[[2]]]}},GridLines->{Range[-20,20,1/2],Range[-20,20,1/2]},GridLinesStyle->{{GrayLevel[0.75]},{GrayLevel[0.75]}},Axes->True,Ticks->{Range[-7,7],Range[-7,7]},Frame->False,PlotRange->{{-5.75,5.75},{-5.75,5.75}},ImageSize->400]