class_docstr: A density based clustering method that expands clusters from 
  samples that have more neighbors within a radius specified by eps
  than the value min_samples.
  
  Parameters:
  -----------
  eps: float
      The radius within which samples are considered neighbors
  min_samples: int
      The number of neighbors required for the sample to be a core point. 
docstr: Return a list of indexes of neighboring samples
  A sample_2 is considered a neighbor of sample_1 if the distance between
  them is smaller than epsilon 
docstr_tok: ["Return","a","list","of","indexes","of","neighboring","samples","A","sample_2","is","considered","a","neighbor","of","sample_1","if","the","distance","between","them","is","smaller","than","epsilon"]
code: def _get_neighbors(self, sample_i):
      """Return a list of indexes of neighboring samples
      A sample_2 is considered a neighbor of sample_1 if the distance between
      them is smaller than epsilon"""
      neighbors = []
      idxs = np.arange(len(self.X))
      for i, _sample in enumerate(self.X[idxs != sample_i]):
          distance = euclidean_distance(self.X[sample_i], _sample)
          if distance < self.eps:
              neighbors.append(i)
      return np.array(neighbors)
  
file_path: ML-From-Scratch/mlfromscratch/unsupervised_learning/dbscan.py
imports: from __future__ import print_function, division
  import numpy
  from mlfromscratch.utils import Plot, euclidean_distance, normalize
label_desc: Use image node_id 2 for calling the DBSCAN obj's underlying member method code with example usage: obj._get_neighbors(sample_i) and returns: np