Mercurial > hg > tvii
diff tvii/dataset/gauss.py @ 87:9d5a5e9f5c3b
add kmeans + dataset
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 17 Dec 2017 14:05:57 -0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tvii/dataset/gauss.py Sun Dec 17 14:05:57 2017 -0800 @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +""" +generate a Gaussian dataset +""" + +import random +import sys +from .cli import DatasetGenerationParser + + +class GaussianSampler(object): + + def __init__(self, D, sigma=1., center=None): + assert D > -1 + self.D = D + if center is None: + self.center = [0]*self.D + else: + assert len(center) == self.D + self.center = center + self.sigma = sigma + + def __call__(self): + """yield one point of a Gaussian distribution""" + + return [random.gauss(x, self.sigma) + for x in self.center] + + +def main(args=sys.argv[1:]): + """CLI""" + + # parse command line + parser = DatasetGenerationParser(description=__doc__) + options = parser.parse_args(args) + + # point generator + generator = GaussianSampler(D=options.dimensions) + points = [generator() for _ in xrange(options.number)] + + # output + parser.writer().writerows(points) + +if __name__ == '__main__': + main()