view 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 source

#!/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()