Mercurial > hg > tvii
diff tvii/dataset/rand.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/rand.py Sun Dec 17 14:05:57 2017 -0800 @@ -0,0 +1,49 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +generate a random dataset +""" + +import csv +import random +import sys +from .cli import DatasetGenerationParser + + +class RandomDataset(object): + + def __init__(self, N, D, bounds=(0., 1.)): + assert len(bounds) == 2 + self.N = N + self.D = D + self.bounds = bounds + self.length = bounds[-1] - bounds[0] + + self.points = [self() for _ in xrange(self.N)] + + def translate(self, fraction): + return self.length*fraction + self.bounds[0] + + def __call__(self): + """generate one `D`-dimensional point of data""" + + return [self.translate(random.random()) for i in xrange(self.D)] + + +def main(args=sys.argv[1:]): + """CLI""" + + # parse command line + parser = DatasetGenerationParser(description=__doc__) + options = parser.parse_args(args) + + # make some random points + points = RandomDataset(N=options.number, D=options.dimensions) + + # output them + parser.writer().writerows(points.points) + + +if __name__ == '__main__': + main()