As there is no analytic solution to the clustering problem, the final result will depend upon some arbitrary decision on what represents a viable cluster in your context.
One approach to investigating the spatial arrangement of your data is to derive a probability distribution from it, using SmoothKernelDistribution
, KernelMixtureDistribution
or a similar function.
I've reduced the density of the clusters to make the plots more illustrative.
data1 = RandomReal[{-0.1, 0.1}, {30, 2}];
data2 = RandomReal[{-1, 1}, {2*10^2, 2}];
data3 = RandomReal[{-0.3, -0.2}, {40, 2}];
data5 = Join[data1, data2, data3];
A contour plot will give you some idea of where the highest regions of data density exist:
ContourPlot[
Evaluate@PDF[SmoothKernelDistribution[data5], {x, y}], {x, -2, 2}, {y, -2, 2},
PlotRange -> All, PlotPoints -> 10]

You can interactively investigate how this varies with threshold by using manipulate:
Manipulate[
ContourPlot[
Evaluate@PDF[SmoothKernelDistribution[data5], {x, y}], {x, -2, 2}, {y, -2, 2},
PlotRange -> {{-2, 2}, {-2, 2}}, PlotPoints -> 15,
RegionFunction -> Function[{x, y, z}, z > t]],
{t, 0, 1}]

A 3D plot gives a different view:
Plot3D[Evaluate@PDF[KernelMixtureDistribution[data5], {x, y}], {x, -2,2}, {y, -2, 2},
PlotRange -> All, PlotPoints -> 30]
