def test_ManhattanMetricWith1Point(self):
     point1 = DataPoint(value=[0.1, 0.2, 0.3])
     resultExpected = 0
     resultReceived = calculateManhattan([point1])
     self.assertEqual(resultReceived, resultExpected)
 def test_ManhattanMetricWith2Points(self):
     point1 = DataPoint(value=[0.1, 0.2, 0.3])
     point2 = DataPoint(value=[0.2, 0.3, 0.4])
     resultExpected = 0.3
     resultReceived = calculateManhattan([point1, point2])
     self.assertEqual(resultReceived, resultExpected)
 def test_ChebyshevMetricWith1Point(self):
     point1 = DataPoint(value=[0.9, 0.8, 0.7])
     resultExpected = 0
     resultReceived = calculateChebyshev([point1])
     self.assertEqual(resultReceived, resultExpected)
 def test_ChebyshevMetricWith2Points(self):
     point1 = DataPoint(value=[0.9, 0.8, 0.7])
     point2 = DataPoint(value=[0.0, 0.1, 0.2])
     resultExpected = 0.9
     resultReceived = calculateChebyshev([point1, point2])
     self.assertEqual(resultReceived, resultExpected)
Exemple #5
0
 def removeObservation(self, observation):
     point = DataPoint(observation)
     if observation in self._observations:
         self._observations.remove(observation)
Exemple #6
0
 def assignOldCenter(self, center):
     self.oldCenter = center
     self._oldCenter = DataPoint(self.oldCenter)
Exemple #7
0
 def clearstaticOldCenter(self):
     self.oldCenter = DataPoint("")
Exemple #8
0
class Cluster:

    oldCenter = DataPoint("")

    def __init__(self, id, center):
        self._id = id
        self._center = center
        self._oldCenter = center
        self._observations = []

    def __repr__(self):
        return repr(self.value)

    def __getitem__(self, item):
        if isinstance(item, (int, slice)):
            return self.__class__(self.value[item])
        return [self.value[i] for i in item]

    def appendObservation(self, observation):
        point = DataPoint(observation)
        if not point in self._observations:
            self._observations.append(point)

    def updateClusterCenterByMean(self):
        dimension = 0
        dimensionsAmount = len(self._center)
        while dimension < dimensionsAmount:
            sumOfDimension = 0
            for observation in self._observations:
                sumOfDimension += observation.getValue(dimension)

            observationsAmount = self.getObservationsAmount()
            mean = round(sumOfDimension / observationsAmount, 5)
            self._center[dimension] = mean

            dimension += 1

        self.clearstaticOldCenter()

    def clearstaticOldCenter(self):
        self.oldCenter = DataPoint("")

    def assignOldCenter(self, center):
        self.oldCenter = center
        self._oldCenter = DataPoint(self.oldCenter)

    def checkIfClusterChanged(self):
        if self._center == self._oldCenter:
            return False
        return True

    def getCenter(self):
        return self._center

    def removeObservation(self, observation):
        point = DataPoint(observation)
        if observation in self._observations:
            self._observations.remove(observation)

    def getObservations(self):
        return self._observations

    def clearObservations(self):
        self._observations.clear()

    def getObservationsAmount(self):
        return len(self._observations)
Exemple #9
0
 def appendObservation(self, observation):
     point = DataPoint(observation)
     if not point in self._observations:
         self._observations.append(point)