awips2/pythonPackages/scientific/Tests/clustering_tests.py
root 9f19e3f712 Initial revision of AWIPS2 11.9.0-7p5
Former-commit-id: 64fa9254b946eae7e61bbc3f513b7c3696c4f54f
2012-01-06 08:55:05 -06:00

66 lines
2.7 KiB
Python
Executable file

#
# Tests for Scientific.Clustering.AffinityPropagation
#
# Written by Konrad Hinsen <hinsen@cnrs-orleans.fr>
# last revision: 2007-3-13
#
import unittest
from Scientific.Clustering.AffinityPropagation import DataSet
from Scientific import N
class APTest(unittest.TestCase):
"""
Test AffinityPropagation
"""
def setUp(self):
self.points = N.array([[-2.341500, 3.696800],
[-1.109200, 3.111700],
[-1.566900, 1.835100],
[-2.658500, 0.664900],
[-4.031700, 2.845700],
[-3.081000, 2.101100],
[2.588000, 1.781900],
[3.292300, 3.058500],
[4.031700, 1.622300],
[3.081000, -0.611700],
[0.264100, 0.398900],
[1.320400, 2.207400],
[0.193700, 3.643600],
[1.954200, -0.505300],
[1.637300, 1.409600],
[-0.123200, -1.516000],
[-1.355600, -3.058500],
[0.017600, -4.016000],
[1.003500, -3.590400],
[0.017600, -2.420200],
[-1.531700, -0.930900],
[-1.144400, 0.505300],
[0.616200, -1.516000],
[1.707700, -2.207400],
[2.095100, 3.430900]])
self.results = [(-50., N.array([ 2, 2, 2, 2, 2, 2, 6, 6, 6, 6,
2, 6, 2, 6, 6, 19, 19, 19, 19, 19,
19, 2, 19, 19, 6])),
(-10., N.array([ 1, 1, 1, 5, 5, 5, 6, 6, 6, 13,
21, 6, 1, 13, 6, 19, 19, 19, 19, 19,
21, 21, 19, 19, 6])),
( -5., N.array([ 1, 1, 1, 5, 5, 5, 6, 6, 6, 13,
21, 6, 1, 13, 6, 22, 17, 17, 17,
22, 21, 21, 22, 22, 6]))]
def simfunc(self, p1, p2):
return -N.sum((p1-p2)**2)
def testPoints2D(self):
data = DataSet(self.points, self.simfunc, symmetric=True)
self.assertAlmostEqual(data.median_similarity, -16.159450725, 10)
for threshold, result in self.results:
data.findClusters(threshold)
self.assert_(N.logical_and.reduce(data.exemplar == result))
if __name__ == '__main__':
unittest.main()