def get_single_score(self, point, centroids=None, sd=None):
        """
            Get a single score is a wrapper around the result of classifying a Point against a group of centroids. \
            Attributes:

            observation_score (dict): Original received point and normalised point.

            :Example:

            >>> { "original": [0.40369016, 0.65217912], "normalised": [1.65915104, 3.03896181]}

            nearest_cluster (int): Index of the nearest cluster. If distances match, then lowest numbered cluster \
            wins.

            distances (list (float)): List of distances from the Point to each cluster centroid. E.g:

            >>> [2.38086238, 0.12382605, 2.0362993, 1.43195021]

            centroids (list (list (float))): A list of the current centroidswhen queried. E.g:

            >>> [ [0.23944831, 1.12769265], [1.75621978, 3.11584191], [2.65884563, 1.26494783], \
            [0.39421099, 2.36783733] ]

            :param point: the point to classify
            :type point: pandas.DataFrame
            :param centroids: the centroids
            :type centroids: np.array
            :param sd: the standard deviation
            :type sd: np.array
            :return score: the score for a given observation
            :rtype score: int
        """
        normalised_point = array(point) / array(sd)

        observation_score = {
            'original': point,
            'normalised': normalised_point.tolist(),
        }

        distances = [
            euclidean(normalised_point, centroid)
            for centroid in centroids
        ]

        return int(distances.index(min(distances)))
Get a single score is a wrapper around the result of classifying a Point against a group of centroids. \
            Attributes:

            observation_score (dict): Original received point and normalised point.

            :Example:

            >>> { "original": [0.40369016, 0.65217912], "normalised": [1.65915104, 3.03896181]}

            nearest_cluster (int): Index of the nearest cluster. If distances match, then lowest numbered cluster \
            wins.

            distances (list (float)): List of distances from the Point to each cluster centroid. E.g:

            >>> [2.38086238, 0.12382605, 2.0362993, 1.43195021]

            centroids (list (list (float))): A list of the current centroidswhen queried. E.g:

            >>> [ [0.23944831, 1.12769265], [1.75621978, 3.11584191], [2.65884563, 1.26494783], \
            [0.39421099, 2.36783733] ]

            :param point: the point to classify
            :type point: pandas.DataFrame
            :param centroids: the centroids
            :type centroids: np.array
            :param sd: the standard deviation
            :type sd: np.array
            :return score: the score for a given observation
            :rtype score: int