How do we interpret the outputs of DBSCAN clustering?
The output from db_scan.labels_ is the assigned cluster value for each of the points that you provide as input to the algorithm.

You provided 20 points, so there are 20 labels. As explained in the relevant documentation, you will see:


  labels_ : array, shape = [n_samples]
  Cluster labels for each point in the dataset given to fit(). Noisy samples are given the label -1.


So each of your points was assigned to one of two clusters, and there were no points marked as noise (receiving a value of -1).



Interpreting the clusters

Your plot shows the original data, plotted on the axes using the original values; only the colour encodes the cluster to which each point was assigned.

As with many clustering algorithms, DBSCAN measures the distance between points in some n-dimensional space. It uses parameters you provide to decide if points belong to the same group, based on their distance from one another.


  Why do I have the negative scales both on the x-axis and y-axis?


The distance metrics used do not really care about the sign of the points (where they lie on an axis), simply the distances. In the case of DBSCAN, it is the Euclidean distance. There are other distances that you can pass to the metric parameter of the DBSCAN algorithm; here is the valid list.